• sed CMD




    • sed 명령어는 스트림 에디터이다. 역할은 원본 파일에 변형을 주지 않고 단지 출력되는 결과를 변화시켜 보여주는 역할을 한다. 에디터의 일종이기 때문에 vi 편집기와 같은 많은 기능을 제공하고 있다. 또한 sed 명령어는 스크립트 형태로 파일에 저장할 수 있기 때문에 다중 편집이나 쉘 명령행에서 인용부호를 사용하는데 따르는 어려움을 줄여준다.



    • ex)



    • # sed '1,3p' /etc/passwd               -> 1,2,3개의 라인을 한번더 출력



    • # sed -n '1,3p' /etc/passwd            -> 1,2,3 라인까지를 출력



    • # sed '1,3d' /etc/passwd               -> 1,2,3 라인을 제외한 나머지 라인을 출력



    • # sed 's/root/ROOT/' /etc/group        -> root를 찾아서 ROOT로 변경후 출력



    • # sed '1,3s/root/ROOT/g' /etc/group    -> 1,2,3 라인에서 root를 ROOT로 변경후 출력



    • # sed -n '/root/,/adm/p' /etc/passwd   -> root문자에서 adm 문자까지를 출력



    • # sed -n '5,/^nobody/p' /etc/passwd    -> 5번째 라인부터, 라인이 처음으로 nobody로 시작하는 라인까지



    • # sed -n '/[Rr]oot/p' /etc/passwd      -> Root나, root를 모두 포함해서 출력



    • # sed -n '/root/p' /etc/passwd         -> root가 포함된 라인만 출력



    • # sed -n '3p' /etc/passwd              -> 3번째 라인만 출력



    • # sed '3d' /etc/passwd                 -> 3번째 라인만 제외하고 출력



    • # sed 's/root/ROOT/g' /etc/passwd



    • # sed 's/^root/ROOT/g' /etc/passwd



    • # sed -n 's/^root/ROOT/p' /etc/passwd



    • # sed -n 's/root/ROOT/gp' /etc/passwd



    • # sed 's/[0-9][0-9]$/&.5/' /etc/passwd



    • # sed 's/(∖Mar∖)got/∖1ianne/p' datafile



    • # sed 's/….//' filename              -> 각행의 첫 4글자 삭제



    • # sed 's/….$//' filename             -> 각행의 마지막 4글자 삭제



    • # sed 's#root#ROOT#g' /etc/passwd



    • # sed '/export/s/-/rq/g' /etc/vfstab




      • /etc/vfstab에서 export라는 단어를 찾고, 그라인에 있는 [-] 를 [rq]로 global 하게 변경.



    • # sed '/west/,/east/s/$/**VACA**/' datafile (<==> 1,15s/$/**VACA**/')




      • west부터 시작해서 east까지 찾아서, 각 라인의 끝에다가 **VOCA**를 덧붙여 준다.



    • sed -e '1,5d' -e 's/no/NO/g' /etc/passwd




      • 5라인을 지우고 ,no를 NO로 변경



    • sed -f script.sed /etc/passwd




      • 미리 만들어놓은 파일을 적용




    • File 다루기




      • 파일 내용 필터링 하기




        • 1. 파일의 첫번째 라인 지우기




          • # sed '1d' filename



        • 2. 파일의 마지막 라인 지우기




          • # sed '$d' filename



        • 3. 파일의 특정한 라인 지우기




          • # sed '3,5d' filename



          • # sed '1,0d' filename



          • # sed '10,$d' filename



          • # sed '/root/,/other/d' filename



          • # sed '/root/d' filename



      • 파일 내용 치환 하기




        • 1. 파일의 첫라인에 새로운 내용 추가




          • # sed '1,3s/^/HIS:    /g' filename   -> 1,2,3의 첫번째 라인에 HIS를 추가



          • # sed '10,$s'/^/HIS:  /g' filename



          • # sed '10,20s/%/     /g' filename    -> 공백만큼 들여쓰기



        • 2. 파일의 끝라인에 새로운 내용 추가




          • # sed '1,3s/$/



        • 3. 파일의 특정한 라인에 새로운 내용 추가




          • # sed '/export/s/-/rq/g/; /etc/vfstab



        • 4. 파일의 주석 모두 지우기




          • # sed -e '/#/d' filename



        • 5. 파일의 공백 지우기




          • # sed -e '/^$/d' filename



    • 옵션

















      옵션


      설명


      -e


      다중 편집을 가능하게 한다.


      -f


      sed 스크립트 파일 지정에 사용된다.


      -n


      기본 출력을 생략한다.



    • 메타문자















      메타문자


      기능


      사용예


      사용 예 설명


      &


      검색열을 저장하여 치환열에서 사용할 *수 있게 한다.


      s/love/**&**


      앰퍼샌드(&)는 검색열을 나타낸다. 문자역 love가 앰퍼샌드로 치환된다. 왼쪽의 경우 love는 **love**로 치환된다.




  • awk CMD




    • 기능



      • ① Filters
      • ② Numerical processing on rows and columns of data
      • ③ Text processing to perform repetitive editing tasks
      • ④ Report generation


    • 확장 명령어

      • gawk (Gnu Awk CMD)
      • nawk (New Awk CMD)


    • 형식


      • awk 'statement' filename



      • statement is



        • ① pattern
        • ② {ACTION}
        • ③ pattern {ACTION}



      • $1 ~ $9는 각 필드에 대한 구분이며 $0은 모든 필드를 의미한다.


    • ex)


      • # awk '{ print $0 }' testfile



      • # awk '{ print $3 $5 $9 }' testfile



      • # awk '{ print $3, $5, $9 }' testfile



      • # awk '{ print $3 " " $9 " " $6, $7 }' testfile



      • # awk '{ print $3 "\t" $5 "\t" $9 }' testfile



      • # awk '{ print $9, "is using", $5, "bytes" }' testfile



      • # awk '/file/' testfile



      • # awk '/^-/' testfile



      • # awk '{ print $1, $2, $3 }' testfile



      • # awk '/file/ { print $1, $2 }' testfile



      • # awk '/file/ { print $1 "∖t" $2 }' testfile



      • # awk '/dir/ { print $1 "∖t" $2 "∖t" $3 }' testfile



      • # awk -F: '/root/ { print $1 "∖045" $2 }' /etc/passwd



      • # awk -F: '$3 > 99 && $3 < 60000 { print $1 }' /etc/passwd



-rw-r–r–  1 named named     960  2월 17 09:28 slave-podmall.net.zone.jnl
-rw——-  1 named named     518  2월 17 09:28 slave-printsj.co.kr.zone
-rw-r–r–  1 named named    1605  2월 17 09:28 slave-printsj.co.kr.zone.jnl
-rw——-  1 named named     426  2월 17 09:28 slave-sambopr.co.kr.zone
-rw-r–r–  1 named named    1672  2월 17 09:28 slave-sambopr.co.kr.zone.jnl
-rw——-  1 named named     425  2월 17 09:28 slave-samhwa85.com.zone
-rw-r–r–  1 named named    9176  2월 17 09:28 slave-samhwa85.com.zone.jnl
-rw——-  1 named named     394  2월 17 09:27 slave-ssfile.kr.zone
-rw-r–r–  1 named named    1592  2월 17 09:27 slave-ssfile.kr.zone.jnl
-rw——-  1 named named     444  2월 17 09:28 slave-stor.kr.zone
-rw——-  1 named named     440  2월 17 09:27 slave-textdesign.co.kr.zone
-rw-r–r–  1 named named    2246  2월 17 09:27 slave-textdesign.co.kr.zone.jnl
-rw——-  1 named named     399  2월 17 09:27 slave-todayart.in.zone
-rw-r–r–  1 named named    1408  2월 17 09:27 slave-todayart.in.zone.jnl
-rw——-  1 named named     429  2월 17 09:27 slave-windigo.co.kr.zone
-rw-r–r–  1 named named    1672  2월 17 09:27 slave-windigo.co.kr.zone.jnl


위의 파일명중 slave- 부분을 없애기


[root@ns2 named]# rename slave- " slave-*

sed, awk

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다