Embedded Linux

리눅스 기본 명령 : [ 3 ] 파일 내용 관련 : 텍스트 처리 및 검색

작성자 임베디드코리아 작성일15-11-23 09:40 조회4,526회 댓글0건
<* 텍스트 처리 및 검색 *>
[ 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