<* 텍스트 처리 및 검색 *>
[ 1 ]  cat : 파일 내용 출력 (Concatenate)
        ◆ cat 명령어는 리눅스에서 파일 또는 텍스트 파일의 내용을 화면에 출력하는 명령어이다.
        ◆ concatenate에서 유래했고 '연결시키다'의 의미를 가지고 있다.
        ◆ 여러 파일을 입력으로 사용하거나 파이프 또는 리다이렉션과 사용하여 다른 파일과 프로그램을 연결할 때도 사용된다.
       
                          < 기본 형식 >            cat  [옵션]    [파일]
                      [ 옵션 ]
                      • -A   --show-all 옵션 -vET와 같음. 탭(TAB) / 줄바꿈(LFD)을 포함한 문자를 표시 한다.
                      • -b   --number-nonblank 비어 있지 않은 라인에만 첫번째 열에 번호를 표시 한다.
                      • -e       -       옵션 -vE와 같음. 줄바꿈(LFD)을 포함한 문자를 표시 한다.
                      • -E   --show-ends     라인의 마지막과 비어있는 라인에도 '$' 기호를 표시 한다.
                      • -n    --number 모든 라인(비어있는 라인에도) 앞 번호를 출력한다.
                      •  -s   --squeeze-blank 두번 이상 연속된 빈 라인(empty line)을 출력 하지 않는다.
                      •  -t         -       옵션 -vT와 같음. 탭(TAB)을 포함한 문자를 표시 한다.
                      •  -T    --show-tabs     탭 문자를 ^I로 바꿔서 출력한다.
                      •  -u - (ignored)
                      •  -v     --show-nonprinting 탭(TAB)과 줄바꿈(LFD)을 제외한 문자를 ^,M-를 사용하여 표시한다.
                      •  -     --help     cat 명령어의 사용법을 출력한다.
                      •  -     --version cat 명령어의 버전을 출력한다.
            ** < cat 명령어로 파일 생성 > **
            파일 생성)  cat >  [파일명]
            덮어쓰기)    cat >  [파일명]
            이어 쓰기)  cat >> [파일명]
[ 2 ]  paste: 파일 병합
      ◆ 여러 파일의 내용을 붙여서 정렬하여 화면에 출력할 수 있는 명령어 이다.
          - 각 파일의 행들을 읽어서 대응되는 것을 탭으로 구분하여 병합하는 명령어
      ◆ paste는 잘 알려지지 않고 사용되는 Linux 및 Unix 명령줄 유틸리티 중 하나입니다.
         
                  < 기본 형식 >      paste  [옵션]    [파일명]
                      [ 옵션 ]
                    •  -s  :  한 파일의 내용을 한 줄로 보여준 후 다른 파일의 내용을 한 줄로 덧붙인다.
                    • -d  :  출력되는 내용의 구분자를 지정한다.
          예 )  file1 과 file2 의 내용을 입력한다.
                  $ vi  file1.txt
                  red
                  blue
                  white
                  $ vi  file2.txt
                  yellow
                  green
                  gray
                  block
                  $ paste  file1.txt  file2.txt
                  red        yellow
                  blue      green
                  white    gray
                                block
                  $ paste  file1.txt  file2.txt  > file3.txt
                  $ cat  file3.txt
                  red        yellow
                  blue      green
                  white    gray
                                block
                  $ paste  -d  :  file1.txt  file2.txt
                  red : yellow
                  blue : green
                  white : gray
                    :  block
                 
                  $ paste  -s  -d  "%"  file1.txt  file2.txt 
                    red%blue%white
                    yellow%green%gray%black
[ 3 ]  cut: 파일에서 필드 추출
          ◆ 파일 내용을 각 필드로 구분하고 필드별로 내용을 추출하며 각 필드들을 구분자로 구분할 수 있는 명령어 이다.
                            < 기본 형식 >          cut    [옵션]    [파일명]
                                [ 옵션 ]
                                •  -b, --bytes  :  바이트를 기준으로 잘라낸다.
                                •  -c, --characters  :  문자수로 열을 계산해서 출력한다.
                                •  -d, --delimiter  :  <구분자> 파일 내의 필드로 따져서 추출한다. (default는 TAB)
                                •  -f, --fields  :  필드를 기준으로 잘라낸다.
                                •  -z, --zero-terminated  :  라인의 구분자를 개행문자가 아닌 NUL 을 사용한다.
                                •  -s   :  <구분자> 필드 구분자를 사용하며 필드 구분자를 포함할 수 없다면 그 행은 수행x
              예 )
                        $  cat testfile.txt
                        1234
                        123 456 789            <----- 공백 구분자
                        123    456    789    <------TAB 구분자
                          abc def ghi            <------ 공백 구분자
                          abc    def    ghi    <------ TAB 구분자
                          $ cut  -c  1-3  testfile.txt      <--- 1~3열 출력
                          123
                          123
                          123
                          abc
                          abc
                          $ cut -f 3 testfile.txt      <--  1~3번째 필드 까지 출력
                            1234
                            123 456 789 
                            789   
                            abc def ghi
                            ghi 
                          $ cut  -f  2 -d  4  cut_test.txt      <----  필드 구분 문자 : 4, 2번째 필드 출력
                           56 789     
                           56      789  
                           56 789i                   
                           abc    def    ghi
[ 4 ]  diff
        ◆  differences의 약자로 두 파일 사이의 내용을 비교하는 명령어
        ◆  cmp 명령보다는 diff 명령어가 보다 직관적이고 명확하게 결과를 알려준다.
        ◆  일반적으로 하나의 파일 버전과 동일한 파일의 다른 버전 간의 변경사항을 보여주는데 쓰인다.
        ◆  3개의 파일까지 비교 가능하다.
                    < 기본 형식 >      diff  [옵션]  [파일명1]  [파일명2]
                      [ 옵션 ]
                      •  -c  :  두 파일간의 차이점 출력
                      •  -d  :  두 파일간의 차이점을 상세하게 출력
                      •  -r  :  두 디렉토리간의 차이점 출력, 서브디렉토리 까지 비교
                      •  -i  :  대소문자의 차이 무시
                      •  -w  :  모든 공백 차이무시
                      •  -s  :  두 파일이 같을 때 알림
                      •  -u  :  두 파일의 변경되는 부분과 변경되는 부분의 근처의 내용도 출력
              예 )
                      a.txt의 파일 내용 : aaaa
                      b.txt의 파일 내용 : bbbb
                      c.txt의 파일 내용 : aaaa
                      $ diff  a.txt  b.txt
                        파일 내용이 같기 떄문에 아무것도 출력되지 않음
                      $ diff  a,txt    b.txt
                      1C1
                      < aaaa
                      ---
                      > bbbb
                    < 는 a.txt 에만 있는 내용이고,  >는 b.txt 에만 있는 내용을 나타낸다.
                   
                    $ diff  -u  a,txt    b.txt
                      - 는 a,txt에만 있는 내용, +는 b.txt 에만 있는 내용
                      a 파일이 b가 되기 위해서는 aaaa가 빠지고 bbbb가 추가되어야 한다는 내용
[ 5 ]  file : 파일 유형 확인
        ◆  file명령어는 지정된 파일의 종류(타입)를 확인하는 명령어이다
             ▪ 해당 파일이 어떤 파일인지 표시 : 텍스트 파일 (ASCII) 인지 실행 파일 (Executable) 인지 ..등
                  < 기본 형식 >     file   [옵션]  [표현식]   [파일 위치]
                 [ 옵션 ]
                •    -P        : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.
                •    -L        : 심볼릭 링크에 연결된 파일 정보 사용.
                •    -H        : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
                •    -D        : 디버그 메시지 출력.
                [ 표현식 ]
                •    -name     : 지정된 문자열 패턴에 해당하는 파일 검색.
                •   -empty    : 빈 디렉토리 또는 크기가 0인 파일 검색.
                •    -delete   : 검색된 파일 또는 디렉토리 삭제.
                •    -exec     : 검색된 파일에 대해 지정된 명령 실행.
                •    -path     : 지정된 문자열 패턴에 해당하는 경로에서 검색.
                •    -print    : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
                •    -print0   : 검색 결과를 출력. 검색 항목은 null로 구분.
                •    -size     : 파일 크기를 사용하여 파일 검색.
                •    -type     : 지정된 파일 타입에 해당하는 파일 검색.
                •    -mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
                •    -maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
                •    -atime    : 파일 접근(access) 시각을 기준으로 파일 검색.
                •    -ctime    : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색.
                •    -mtime    : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색.
               예 )  현재 디렉토리에서 abc가 들어가는 파일과 디렉터리 모두 출력
                       $ find  . -name  '*abc*'  -type  d
               예 )  /opt 디렉터리에 있는  .c로 끝나는 파일을 10개만 먼저 출력
                       $ find  /opt  '*.c' | head -10
               예 )  현제 디렉토리에서 수정한지 10일 이상된 파일만 뽑아서 자세히 출력
                       $ find  .  -mtime  +10 -type f  -ls
                예 )  오래된 로그를 자동으로 정리해줄 때 잘 사용되는 명령어
                         - 현재 디렉토리에서 수정한지 10일이 지난 오래된 tar파일들만 골라서 삭제
                        $ find  .  -name "*.tar" -mtime +10 -delete
                   예 )   파일 크기가 200KB 이상되는 파일만 출력
                           $ find . -size +300kCopy
[ 6 ]  more : 파일 내용 페이지 단위로 출력
        ◆  리눅스에서 파일 내용을 확인하는 명령어들 중 하나로 파일을 읽어 화면에 화면 단위로 출력하는 명령어 이다.
        ◆  스페이스바를 눌러 다음 페이지로 이동할 수 있다.
                   < 기본 형식 >      more   [옵션]  filename1, filename2, ...
       
                    [ 옵션  ]
                   • -p : 페이지를 이동할 때 화면을 아래로 이어서 출력하지 않고 새로고침 하면서 출력한다.
                   • -숫자 : 한 페이지를 몇 줄로 설정할 것인지 정한다.
                   • -s : 여러 줄의 공백이 있는 경우 한 줄의 공백으로 줄여 표시한다.
                   • -d : 한 페이지가 끝나면 --More-- 문구 옆에 [Press space to continue, q to quit] 문구를 표시한다.
                  **< more 실행 중 명령어 >**
                  ►  Space :  다음 페이지로 이동
                  ►  숫자 + z : 숫자줄 만큼 다음으로 이동
                  ►  q 또는Q : more 명령어 종료
                  ►  f  :  다음 페이지로 이동  
                  ►  b  : 이전 페이지로 이동
                  ►  =  :  현재 줄 번호 표시
                  ►  v  :   vi 에디터로 실행
                  ** < more 실행 중 문자열 검색 > **
                  ►  /표현식  :  표현식에 해당하는 문자열을 찾는다.
                  ►  n   :  다음으로 발견되는 문자열을 찾는다.
                  ►   '   :  이전 발견되는 문자열을 찾는다.
 
          예 )  5줄씩 보여 주고, more 명령어 에서 빠져나오는 방법은 q 또는 Q를 입력하면 됩니다.
                 $  more   -5  text.txt
[ 7 ]  less  : 파일 내용 페이지 단위로 출력
       ◆  more보다 더 많은 기능을 제공하는 텍스트 파일 페이지 출력 명령어 이다. 
       ◆  less의 가장 큰 장점은 양방향 스크롤이 가능하다. 
            - 위아래로 파일을 자유롭게 탐색할 수 있다.
                < 기본 형식 >       less   [옵션]   filename
                  [ 옵션 ]
                    •  -N  :   줄 번호를 출력한다.
                   ** < less 실행 중 문자열 검색 > **
                  ►  Space   :  줄 번호를 출력한다.
                  ►   f	    :  다음 페이지로 표시한다.
                  ►  Enter    :  행 단위로 표시한다.
                  ►  /[String]	:  표시되는 파일에 내용 기준 이후에 내용의 문자열을 찾는다.
                  ►  ?[String]	:  표시되는 파일에 내용 기준 이전에 내용의 문자열을 찾는다.
                  ►   q	        :  less 명령어를 종료다.
            예 )   확인하고자 하는 파일의 내용이 너무 길 경우 한 화면에 다 출력할 수 없으므로 파이프(|)를 이용해서 less 명령어를 사용한다.
                  $ cat  sample.txt  | less
                  $ less  sample.txt
[ 8 ]  grep: 파일 내에서 특정 문자열 검색 (Global Regular Expression Print)
      ◆  grep명령어는 파일 내의 특정 문자열을 찾을 때 사용하는 명령어다. 
      ◆   단순히 문자만 찾는 명령어가 옵션에 따라 문자열을 포함하거나 비포함, 라인수 등 여러 가지 방법으로 조회할 수 있다. 
                < 기본 형식 >            grep  [옵션]   "문자열"   [파일명]
                 [ 옵션 ]
                 ▪   -i  :  대소문자를 구분하지 않는다
                 ▪  -n  :  줄의 번호와 내용을 같이 검색
                 ▪  -m  :  최대 출력 수 제한
                 ▪   -v  :  문자가 포함되지 않는 행 검색
                 ▪  -w  :   단어 단위로 문자열 검색
                 ▪  -H   :  검색 결과 앞에 파일 이름 표시하여 검색
                 ▪   -r   :  하위 디렉토리를 포함한 모든 파일에서 문자 검색
             예 )    grep   -i  "문자열"   [파일 명] 
                     $ grep -i "error" app_2023_04_03.log
              예 )   grep   -n   "문자열"   [파일 명] 
                      $ grep -n "error" app_2023_04_03.log    ---> "error"문자열이 포함된 라인 번호 출력.
               예 )  grep -m [라인수] "문자열" [파일 명]
                       $ grep -m 50 "error" app_2023_04_03.log       ---> "error"문자열이 포함된 결과 50개까지 출력.
                예 )  grep   -v   "문자열"   [파일 명]
                       $ grep -v "error" app_2023_04_02.log    ---> "error"문자열이 포함되지 않은 라인 출력.
                예 )  grep  -w   "문자열"   [파일 명]
                        $ grep -w "error" app_2023_04_02.log        ----> "error"문자열(단어 단위) 포함된 라인 출력.
                예 )  grep   -H   "문자열" *
                        $ grep  -H   "error" *       ----> "error"문자열이 포함된 파일 이름 표시.
                 예 )   grep   -r   "문자열"    *
                         $ grep   -r   "error"    *         ----> 하위 디렉토리에 있는 파일까지 포함하여 모든 파일에서 "error"문자열 검색
                         $ grep    "error"    *             -----> 현재 디렉토리에 있는 모든 파일 중 "error"문자열 검색
           grep "문자열1\|문자열2" [파일명]         ----> 여러 문자열을 한번에 검색
           grep "문자열1" [파일명] | grep "문자열2" | grep "문자열3"      ---> 여러 문자열을 한번에 검색
           grep "문자열" [파일명] >> [저장할 파일명]        ---> *원하는 내용을 출력하여 파일로 재가공*
           grep "^문자열" [파일명]                  ----> 문자열로 행이 시작되는 경우 검색 
           grep "^[he]" [파일명]                   ----> h나 e로 시작하는 모든 행 검색
           grep "문자열&" [파일명]                ----> 문자열로 행이 끝나는 경우 검색
            grep "h*" [파일명]                      ----> "h"로 시작하는 모든 로우 검색
            grep -A2 "문자열" [파일명]           ---> 해당 문자열이 들어강 행을 포함해 아래 2행 검색
             grep -v "문자열" [파일명]               ----> 해당 문자를 제외한 행 검색
             grep "문자열" *                      ---> 현재 위치의 모든파일 (*)에서 특정 문자열 검색
             grep  [a-c]   [파일명]                  ----> a,b,c로 시작하는 로우를 검색
             grep "h...e" [파일명]                   ----> h로 시작하고 e로 끝나는 단어 검색
[ 9 ]  wc : 파일 내 단어, 줄, 문자 수 세기 (Word Count)
      ◆ Word Count의 약자로 사용자가 지정한 파일에 행이나 단어 또는 문자수를 출력해 주는 명령어 이다.
           - 파일의 대략적인 양, 파일을 비교할 때, 특정 명령어의 결과에 대한 라인 수
                 < 기본 형식 >     wc   [옵션]   [파일]
    
                  [ 옵션 ]
                  ▪  -c	--bytes	지정한 파일의 바이트(byte) 수를 출력한다.
                  ▪  -m	--chars	지정한 파일의 문자(char) 수를 출력한다.
                  ▪  -l	--lines	지정한 파일의 행(Line) 수를 출력한다.
                  ▪   -	--files0-from=F	NUL로 끝나는 파일에 대해 입력값을 받아 정보를 출력한다.
                  ▪  -L	--max-line-length	지정한 파일 중 가장 긴 라인의 문자 수를 출력한다.
                  ▪  -w	--words	지정한 파일의 단어(word) 수를 출력한다.
                  ▪   -	--help	wc 명령어의 사용법을 출력한다.
                  ▪   -	--version	wc 명령어의 버전을 출력한다.
             ►  파일을 입력하지 않거나 파일이 '-' 기호로 입력되면 표준 입력을 읽는다.
             ►  입력 후 ctrl+d를 눌러 종료하면 행(Line), 단어(word), 행(Line)+문자수(Char)가 출력된다.
            예 ) 
                  $ cat -n file1.txt
                 1  Hello, my name is Song
                 2  How ary you?
                 3  Nice to meet you
                 4  I like apple
                 5  They should keep their prom
                  $ wc -m file1.txt
                  97 file1.txt
                  $ wc -l file1.txt
                  5 file1.txt
[ 10 ] sort: 파일 내용 정렬
          ◆  파일 내용을 줄 단위로 오름차순 정렬한다.
               - 기본적으로 각 줄의 첫 번째 필드를 기준으로 한다.
                        < 기본 형식 >      sort   [-옵션]   파일*
                     [ 옵션 ]
                    ▪  -b  :   앞에 붙는 공백을 무시한다.
                    ▪  -c  :   이미 정렬된 상태인지 확인한다.
                    ▪  -d  :   숫자, 문자, 공백만 비교해 사전식으로 정렬한다.
                    ▪   -f  :   대소문자 구분 없이 정렬한다.
                    ▪   -n  :  숫자 문자열의 숫자 값에 따라 정렬한다.(1, 2, 3...)
                    ▪   -r  :  역순(내림차순)으로 정렬한다.
                    ▪   -t 문자  :  지정된 문자를 필드 구분자로 사용한다.
                    ▪   -o   :  정렬된 내용을 지정된 파일에 저장한다.
               ** < 정렬 필드 지정 방법 > **
                  ►  -k 필드번호 : 필드번호를 1부터 센다.
                  ►  +시작필드 -종료필드 : 필드번호를 0부터 세며, (시작필드 ~ 종료필드 - 1) 을 기준으로 정렬한다.
                 예)   둘 다 동일한 명령
                         $ sort   -k  3   textfile.txt 
                         $ sort   +2  -3   textfile.txt
                 예 )   textfile.txt을 정렬해 sort.txt에 저장 
                         $ sort   -o   sort.txt   textfile.txt 
                    예 )   ':'을 필드 구분자로 사용하며 3번째 필드 기준으로 정렬 
                         $ sort   -t:   -k   3   -n   /etc/passw
[ 11 ]  head : 파일 상위 일부 출력
      ◆  파일의 전체 내용 중 앞부분을 출력해 주는 명령어이다.
      ◆  텍스트 파일로 된 파일의 전체 내용 중 앞부분을 출력해주며 binary로 된 파일은 출력은 되지만
           알아볼 수 없는 문자로 출력해 주기 때문에 텍스트 파일로 된 파일 출력을 권장한다.
      ◆  주로 대용량의 로그 파일이나 줄 수가 많은 파일 또는 어떤 파일인지 확인하려고 할 때 사용한다.
               < 기본 형식 >    head   [옵션]   [파일]
                [ 옵션 ]   옵션을 사용하면 파일의 행수나 용량을 지정할 수 있어 사용자가 원하는 만큼 출력을 지정할 수 있다.
                •   -숫자 :  출력을 원하는 줄 수를 지정. 디폴트 값은 10이며, 10일 경우 첫 번째 줄 부터 열 번째 줄까지 출력 된다.
                •   -c      :  출력을 원하는 용량(SIZE)를 지정. 사이즈를 지정할 때는 b(block=512bytes), k(kilobytes), m(megabytes)와 
                                  같이 단위를 지정하며 단위를 지정하지 않을 경우에는 바이트 단위로 출력 된다.
                •    -n    :   출력을 원하는 줄 수를 지정
                •    -q    :  출력할 때 파일명을 출력 안 함
                •    -v     :  출력하는 파일명을 출력
          예 )   file1.txt , file2.txt , file3.txt , file4.txt 파일에는 모두 동일하게  a부터 z까지 각 5글자 씩 총 26줄이 존재한다.
                 $  head file1.txt    <--- 아무런 옵션을 사용하지 않으면 기본적으로 처음부터 10줄을 표준 출력으로 출력한다.
                  aaaaa
                  bbbbb
                  ccccc
                  ddddd
                  eeeee
                  fffff
                  ggggg
                  hhhhh
                  iiiii
                  jjjjj
                  $ head file1.txt file2.txt file3.txt file4.txt
                   ==> file1.txt <==
                  aaaaa
                  bbbbb
                  ccccc
                  ddddd
                  eeeee
                  fffff
                  ggggg
                  hhhhh
                  iiiii
                  jjjjj
                   ==> file2.txt <==
                  aaaaa
                  bbbbb
                  ccccc
                  ddddd
                  eeeee
                  fffff
                  ggggg
                  hhhhh
                  iiiii
                  jjjjj
                   ==> file3.txt <==
                  aaaaa
                  bbbbb
                  ccccc
                  ddddd
                  eeeee
                  fffff
                  ggggg
                  hhhhh
                  iiiii
                  jjjjj
                  ==> file4.txt <==
                  aaaaa
                  bbbbb
                  ccccc
                  ddddd
                  eeeee
                  fffff
                  ggggg
                  hhhhh
                  iiiii
                  jjjjj
            예 )   head 명령어로 표준 입력을 받아 파일을 생성할 수 있다.
                  $ head > testfile.txt
                  Hi. My name is kilsung
                  Nice to meet you
                  bye bye
[ 12 ]  tail :  파일 하위 일부 출력
       ◆  tail 명령어는 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해주는 명령어이다. 
       ◆  기본값으로는 마지막 10줄을 출력하며 주로 tail은 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용된다.
                < 기본 형식 >    tail   [옵션]   [파일명]
                [ 옵션 ]
               ▪   -f  :  tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다.
               ▪   -n (라인 수)  :  파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
               ▪   -c (바이트 수) : 파일의 마지막부터 지정한 바이트만큼의 내용을 출력한다.
               ▪   -q  :  파일의 헤더와 상단의 파일 이름을 출력하지 않고 내용만 출력한다.
               ▪   -v  :  출력하기전에 파일의 헤더와 이름 먼저 출력한 후 파일의 내용을 출력한다.
           예 )     -n [숫자] : 마지막 10 줄을 출력
                   $ tail   -n  10   example.txt
           예 )    -f : access.log 파일의 실시간으로 출력
                  $ tail  -f  access.log
           예 )   -c [바이트] : example.txt 파일 마지막 100바이트를 출력
                  $ tail   -c 100  example.txt
           예 )   -q : 파일명을 출력하지 않음 (여러 파일 처리 시 유용함)
                  $ tail  -q  example1.txt   example2.txt ...
           예 )    -v : 파일명을 항상 출력 (여러 파일 처리시 유용함)
                  $ tail   -v   example1.txt   example2.txt ...
           예 )   -s : [초] 출력 사이에 지연 시간을 설정 (-f 옵션과 같이 사용하면 유용)
                  $ tail   -f -s 1   example.txt
           예 )     -r : 파일의 내용을 역순으로 출력
                  $ tail  -r  example.txt
           예 )   --pid=[PID] : 지정된 PID가 종료될 때까지 파일의 끝 부분을 출력
                 $ tail  --pid=40745   example.txt
           예 )    -z : 끝나는 줄 구분을 줄바꿈이 아닌 NUL로 구분 (아카이브 파일 확인 시 유용)
                  $ tail   -z  example.txt
[ 13 ]  sed :  텍스트 편집 및 치환 (Stream Editor)
       ◆  문자열/파일을 수정(치환, 삭제, 삽입 ….)하여 출력해주는 기능을 제공한다.
       ◆  대화식 처리가 아닌, 명령행에서 직접 편집을 수행한다.
       ◆  원본 파일은 변경되지 않는다.
       ◆  정규 표현식을 사용하여, 편집하려는 행을 검색/선택할 수 있다.
       ◆  패턴 검색/선택을 위해서 다수의 메타문자를 사용할 수 있다.
       ◆  파일을 한 행(line)씩 읽을 수 있다.
       ◆  패턴 스페이스, 홀드 스페이스 두 가지 버퍼를 사용한다.
       ◆  패턴 스페이스에는 현재 작업중인 라인을 저장한다.
       ◆  여러 라인들을 처리(변환/치환)해야하는 경우, 처리할 라인을 홀드 스페이스에 저장한다.
                 < 기본 형식 >      sed   [옵션]   '명령어'   파일명
                [ 옵션 ]
               •   -e   :   다중 편집을 가능하게 한다.
                                2개 이상의 패턴을 사용하는 경우에 사용한다.
               •  -n    :  자동 출력을 생략한다.(기본 동작은 문자열/파일의 전체 출력.)
                                변경한 라인만 출력하고 싶은 경우에 사용한다.
               •  -p    :  행을 출력한다(-n 옵션과 함께 사용할 경우, 선택된 행만 출력한다.)
               •  -d    :  선택한 행을 삭제한다.
               •   -f    :  파일 안의 내용을 실행한다.
               •   's/가/나/g'    :   '가' 문자열을 '나' 문자열로 대체한다.
               •   -q     :  sed를 종료한다.
            예 )   패턴에 해당하는 부분만 보려면 –n 옵션으로 사용한다.
                    $ sed   -n   '/011/p'   data 
             예 )   1번 라인부터 3번 라인까지 삭제하고 출력.
                    $  sed   '1,3d'  data 
 
             예 )   4q는 4라인까지 출력한 후 종료하라는 의미이다.
                    $ sed '4q' data Å q 옵션은 종료 옵션이다. 
       ***< sed 정규식/메타문자 정리 >***
 정규식(메타문자)	              기능	                                   사용 예	                          사용 예 설명
       ^	                     행의 시작 지시자	                            /^love/                     love로 시작하는 문자 검색.
       $	                     행의 끝 지시자                                  /love$/         	l ove로 끝는 문자 검색.
       .                             하나의 문자와 대응                           /l…e/	                l 다음의 두 문자 후 e로 끝나는 문자 검색.
       *	                     선행 문자와 같은 문자의 0개 	     /*love/               0개 혹은 여러 개의 공백후 love로 끝나는 문자 검색.
                                     혹은 임의 개수와 대응
       [ ]                          [ ]사이의 문자 집합중 하나와 대응	/[Ll]ove/	                love나 Love를 포함하는 문자 검색.
       [^] 	                    문자 집합에 속하지 않는	               /[^A-KM-Z]ove/	A~K, M~Z범위에 포함되지 않는 문자 이후 ove로 끝남
                                    한 문자와 대응
      \(..\)                       문자열을 저장	                             s/\(lov\)able/\1er/   지정된 부분을 태크1에 저장함. loveable을 검색 후 lover로 저장.
         &                        검색열을 저장하여 치환열에서 .	     s/love/**&**/         문자열 love가 &와 치환됨
                                    사용할수 있게 함
        \<	                   단어의 시작 지시자	                       /\<love/                       love로 시작하는 단어를 포함하는 행을 검색.
        \>	                   단의 끝 지시자	                               /love\>/	                   love로 끝나는 단어를 포함하는 행을 검색.
      x\{m\}	           문자 x를 m번 반복	                               /o{5\}/                         문자 o를 5번 반복 검색.
      x\{m,\}	           문자 x를 최소 m번 반복	                       /o{5,\}/	                   문자 o를 최소 5번 반복 검색.
      x\{m,n\}	           문자 x를 m~n회 반복	                       /o{5,10}/	                   문자 o를 5~10번 반복 검색.
         *** < sed 플래그/커맨드.>***
        ▪  a\  :   현재 행에 하나 이상의 새로운 행을 추가한다.
        ▪  c\  :   현재 행의 내용을 새로운 내용으로 교체한다.
        ▪  i\   :   현재 행의 위에 텍스트를 삽입한다.
        ▪  h   :   패턴 스페이스의 내용을 홀드 스페이스에 복사한다.
        ▪  H  :   패턴 스페이스의 내용을 홀드 스페이스에 추가한다.
        ▪  g  :   홀드 스페이스의 내용을 패턴 스페이스에 복사한다.
        ▪  G  :  홀드 스페이스의 내용을 패턴 스페이스에 추가한다.
        ▪  l    :  출력되지 않는 특수문자를 명확하게 출력한다.
        ▪  n   :  다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리하게 한다.
        ▪  !   :  선택된 행을 제외한 나머지 전체 행에 명령어를 적용한다.
        ▪  r	   :  파일을 읽어온다.
        ▪  d   :  행을 삭제한다.
        ▪  p   :  행을 출력한다.(전체 데이터 출력.)
        ▪  s   :  문자열을 치환한다.
          ***< sed 치환 플래그 >***
        ▪  g  :  문자열/파일내에 모든 패턴들을 검색하고 전체에 대해 치환한다.
        ▪  i    :  대소문자를 무시하고 실행한다.
        ▪  p  :  치환된 행만을 출력한다.
        ▪  w  :  파일에 쓴다.
        ▪   x  :  홀드 버퍼와 패턴 스페이스의 내용을 서로 맞바꾼다.
        ▪   y  :  한 문자를 다른 문자로 변환한다
[ 14 ]  awk :  텍스트 처리 및 보고서 생성
       ◆  AWK (Aho Weinberger Kernighan)는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 
             나온 결과를 행과 열로 출력해주는 프로그램 이다. 
       ◆  awk 명령은 이름에 그 기능을 의미하는 단어나 약어가 포함되어 있지 않다. 
            ▶  awk는 최초에 awk 기능을 디자인한 사람들의 이니셜을 조합하여 만든 이름이기 때문이다. 
            ▶  Aho + Weinberger + Kernighan. (A:Alfred V. Aho, W:Peter J. Weinberger, K:Brian W. Kernighan)
       ◆  awk는 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 
             사용하는 프로그램입니다. 
             ▶  awk 명령의 입력으로 지정된 파일로부터 데이터를 분류한 다음, 분류된 텍스트 데이터를 바탕으로 패턴 매칭 여부를 검사하거나 
                  데이터 조작 및 연산 등의 액션을 수행하고, 그 결과를 출력하는 기능을 수행합니다.
       ◆   awk는 "awk programming language"라는 프로그래밍 언어로 작성된 프로그램을 실행 하는 명령어이다.
             ▶   리눅스에서 쉘 스크립트(Shell Script)로 작성된 파일이 리눅스 쉘(Shell)에 의해 실행되는 것처럼, 
                    awk가 "awk programming language" 문법으로 작성된 코드를 이해하고 실행 한다는 의미로 보면 된다.
                               < 기본 형식 >      awk   [옵션]    'pattern { action }'   [파일|변수값]
                                [ 옵션 ]
                               ▪   -u  :  버퍼를 사용하지 않고 출력한다.
                               ▪   -F   :  확장된 정규 표현식으로 필드구분자를 지정한다, 다중 필드 구분자 사용 가능하다.
                               ▪  awk -F	  :  단일로 사용시 ':' 를 필드 구분자로 사용
                               ▪  awk -F'[ :\t]'   :  다중 필드 구분자  ':'와 tab을 필드 구분자로 사용
                               ▪  -v  :  스크립트를 실행하기 전에 미리 변수를 지정하여 준다.
                               ▪   -f  :  awk 명령 스크립트를 파일에서 읽어온다.
         **< 패턴(pattern) 과 액션(action) >**
          ► awk는 파일 또는 파이프를 통해 입력 라인을 얻어와 $0라는 내부 변수에 라인을 입력한다.
          ► 각 라인은 레코드라고 부르고, newline(개행)에 의해 구분되다.
          ► 패턴이 없으면 전체 라인을 얻어오고, 원하는 라인만 얻어오고 싶을때는 패턴을 사용해 분별할 수 있다.
          ► awk를 실행할때 내장 변수인 FS라고 부르는 필드 분리자가 공백을 할당 받는다.
              (필드 분리 기준을 공백이 아닌 다른 값으로 바꿀수도 있다)
          ►  awk는 라인을 공백을 기준으로 각각의 필드나 단어로 나눈다.
          ►  필드는 $1부터 시작해서 많게는 $100 이상의 변수에 저장할 수 있다.
          ► 각 필드 데이터들을 저장했다면 awk는 액션을 통해 동작 스크립팅을 할 수 있다.
         예 )  필드들을 화면에 출력할 때 print 함수를 사용하면 된다.   
                 $  awk  -F":"   '/linux/ {print $1}'  test.txxt
                      ►  -F : 필드 구분 문자를 공백 말고 ":" 로 설정
                      ►   pattern /linux/ : linux 문자열을 포함한 모든 레코드 출력
                      ►   action {print $1} : 각 행(레코드)에서 첫번째 필드를 출력
[ 15 ]  echo  : 문자열 출력
        ◆  C 언어의 printf 함수에 준하는 화면 출력을 담당하는 명령어이다.
        ◆  유닉스 및 유닉스 계열(리눅스) 운영체제에서 지정한 문자열 또는 텍스트를 터미널에 출력하는 명령어이다.
        ◆  일반적으로 터미널 프롬프트 명령이나 쉘 스크립트, 배치파일에서 화면이나 파일로 상황을 알리는 문자열을 출력할 때 사용한다.
        ◆   문자열과 함께 개행 문자를 덧붙여서 출력이 가능하다.
        ◆   쉘 스크립트의 변수나 터미널의 환경 변수나 변수를 확인할 경우 주로 사용한다.
        ◆    echo명령어는 리눅스에서 출력 명령어로 자주 쓰는 명령어이다
  
              < 기본 형식 >        echo   [옵션]    [텍스트 및 문자열]
                                          ▷ 옵션 없이 사용할 수 있고, 다양한 옵션과 이스케이프 문자의 옵션을 이용하여 여러 가지 방식으로 출력을 표현할 수 있다.
             예 )
                   $ echo  $0
                   $ echo  $SHELL
                   $ echo   $(( ( 3 + 1 ) * 4 ) ))
 
               예 )   버에 PATH 경로 확인 
                      $ echo $PATH
               예 )  리다이렉션 을 이용한 파일 저장 및 계정에 암호 설정 등에 사용 될 경우
                     $ echo  " What's your name ?" > newTextFile.txt
                예 )  root의 패스워드를 변경 - 파이프 와 stdin 를 통해 roo 패스워드 를 변경 가능 하다.
                       $ echo "123456" | passwd --stdin "root"
[ 16 ]  clear  - 터미널 화면 지우기
        ◆  리눅스 명령어 clear는 터미널의 내용을 모두 지우는 명령어로 도스의 cls명령어와 같은 동작을 한다.
        ◆  옵션도 없는 단순 명렬이다.
          예  )
                 $  clear