제4 장: 삼 총사 의 grep, sed

8490 단어
1 절: 정규 표현 식
정규 부호
속뜻
^
첫머리
$
엔 딩
.
임의의 문자
^$
공 행
*
앞의 문자 와 일치 하여 0 회 또는 0 회 이상 나타 납 니 다.
.*
소유 하 다.
\
특수 문자 의 의 미 를 취소 합 니 다.
{n}
앞 글자 n 회 일치
{n,}
앞의 문 자 는 적어도 n 번 일치 합 니 다.
{n,m}
앞의 문 자 는 최소 n 회, 최대 m 회, n 과 일치 합 니 다.
{,m}
앞의 문 자 는 최대 m 회 일치 합 니 다.
2 절: grep | egrep 여과
1. grep 관련 옵션
option:
        -i           
        -v         
        -n                      
        -c                
        -w          
        -o                
        -E            
        -r          
        -R           
        -A                      
        -B                      
        -C                         
        -q          ,         。                0

2. 관련 매개 변수의 용법
1.        root  -i
[root@lb03 ~]# grep  -i  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT

2.     root        -C
[root@lb03 ~]# grep  -ic  'root'  passwd 
4

3.     root     ,        -n
[root@lb03 ~]# grep  -in  'root'  passwd 
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
22:ROOT

4.     /sbin/nologin        (  ) -v
[root@lb03 ~]# grep -v  '/sbin/nologin'  passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
ROOT

5.     -w
[root@lb03 ~]# grep  -iw  'root'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT

6.          root -o
[root@lb03 ~]# grep  -o  'root'  passwd 
root
root

7.      -r
[root@lb03 ~]# grep -r  'root'  ./*
./anaconda-ks.cfg:rootpw --iscrypted $6$uxSmIs.46F1YbJYk$W0p9dIjeZPPe556u5YJGhQvOQyEdTk2Q9pHELzfEvDFfUXbKSiyUB9RDAPsfpzSj9BoBXMoyYP87m2qv5xW56/
./anaconda-ks.cfg:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
./data/oldboy.txt:root

8.   adm        -A
[root@lb03 ~]# grep -n -A 2 'adm'  passwd 
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync

9.   adm        -B
[root@lb03 ~]# grep -n -B 2 'adm'  passwd 
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin

10.   adm           -C
[root@lb03 ~]# grep -n -C 2 'adm'  passwd 
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync       

3. grep 정규 표현 식 결합 용법
1.  passwd            
[root@lb03 ~]# grep -o  '[a-Z]'  passwd  |sort |uniq -c |sort -rn
     80 n
     77 o
     62 s
     55 i
     42 t
     38 b
 
2.  passwd            
[root@lb03 ~]# grep -Eo  '[a-Z]+'  passwd  |sort |uniq -c |sort -rn
     23 sbin
     21 x
     17 nologin
      6 var
      5 bin
      4 root
      3 sync
      3 spool
      3 shutdown

3. ip  
[root@lb03 ~]# ip a s eth0 |grep -w inet  | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |head -1
10.0.0.4

4.           
[root@lb03 ~]# grep -Ew '[0-9]{17}[0-9X]'  id.txt
  371481199403259478
  52020319810613433X
  530124197504135438
  360702197902169951

제3 절: sed 흐름 편집기
1. sed 작업 모드
2. sed 의 관련 옵션 즉 매개 변수
  : 
        -n                
        -i                
        -r                 
        -e                
                
      
        a         
        i         
        s         
        g         
        p         
        d         
        i            
        c            
        h               
        H 
        g 
        G 

3. sed 용법
1.          
[root@lb03 ~]# sed -n  '1p'  passwd 

2.       
[root@lb03 ~]# sed -n  '1,3p'  passwd 

3.        
[root@lb03 ~]# sed -n  '1p;3p'  passwd 
[root@lb03 ~]# sed -n '$p'  passwd
    
4.      
[root@lb03 ~]# sed  -n  '/root/p'  passwd 

5.   root  
[root@lb03 ~]# sed  -n  '/^root/p'  passwd 
[root@lb03 ~]# sed  -n  '/^ROOT/p'  passwd 

6.   t     
[root@lb03 ~]# sed  -n  '/t$/p'  passwd 
        
7.              
[root@lb03 ~]# sed  -n  '/adm/,/ftp/p'  passwd 

8.        
[root@lb03 ~]# sed  -n  '/adm/p;/ftp/p'  passwd 
[root@lb03 ~]# sed -rn  '/adm|ftp/p'  passwd 

9.  1 
[root@lb03 ~]# sed '1d'  passwd 

10.       
[root@lb03 ~]# sed '1,20d'  passwd 

11.      
[root@lb03 ~]# sed '1,$d'  passwd 

12.        
[root@lb03 ~]# sed '1d;3d'  passwd 

13.            
[root@lb03 ~]# sed  '1aoldboy'  test.txt

14.           
[root@lb03 ~]# sed '1ioldboy'  test.txt

15.          
[root@lb03 ~]# sed  '1s/^/oldboy
/' test.txt 16. [root@lb03 ~]# sed '$s/$/
oldgirl/' test.txt

4. sed 의 대체 용법
1.    
[root@lb03 ~]# sed  's#root#admin#g'  test.txt 

2.    
[root@lb03 ~]# sed  '1,5s#bin#shell#g'  test.txt

3.            
[root@lb03 ~]# sed  '1,5s#bin#shell#'  test.txt

4.           
[root@lb03 ~]# sed   '/^root/s#root#admin#g'  test.txt

5.       
[root@lb03 ~]# sed   's#root#admin#gi'  test.txt

-c        (      ) 
6.         
[root@lb03 ~]# sed  '1cadmin'  test.txt

7.             
[root@lb03 ~]# sed  '/root/cadmin'  test.txt

[root@lb03 ~]# sed '7cSELINUX=enforcing'  /etc/sysconfig/selinux

[root@lb03 ~]# sed '/^SELINUX=/cSELINUX=enforcing'  /etc/sysconfig/selinux

[root@lb03 ~]# sed  '/^#Port/cPort 666'  /etc/ssh/sshd_config

[root@lb03 ~]# sed  '17cPort 666'  /etc/ssh/sshd_config

[root@web ~]# sed  '/^user/cuser www;'  /etc/nginx/nginx.conf

8.             
[root@lb01 ~/scripts/02]# cat url.txt 
www.baidu.com
www.taobao.com
www.mysun.com
[root@lb01 ~/scripts/02]# sed ':label;N;s/
/ /;b label' url.txt www.baidu.com www.taobao.com www.mysun.com w # [root@lb03 ~]# sed -n '/root/w file.txt' passwd [root@lb03 ~]# sed -n '1w file1.txt' passwd e # [root@lb03 ~]# sed '1,10d' passwd |sed 's#root#123#g' [root@lb03 ~]# sed -e '1,10d' -e 's#root#123#g' passwd n # , ( n ) [root@lb03 ~]# sed '/root/{n;d}' passwd [root@lb03 ~]# sed '/root/{n; s/bin/123/}' passwd ! # [root@lb03 ~]# sed -n '1!p' passwd [root@lb03 ~]# sed '1!d' passwd # [root@lb03 ~]# sed = passwd # ( .bak ) [root@lb03 ~]# sed -i.bak '1,$d' passwd

5. sed 의 고급 용법
    :
        h         #                  
        H         #                 
        g         #          ,         ,        
        G         #          ,         ,         
        
  :
1.           ,          
[root@lb03 ~]# sed  '1h;$g'  file.txt

2.           ,              
[root@lb03 ~]# sed  '1h;$G'  file.txt

3.                ,                   
[root@lb03 ~]# sed  '1{H;d};$G'  file.txt

4.             ,              
[root@lb03 ~]# sed  '1h;2,$g'  file.txt

5.           , 2-3       ,             
[root@lb03 ~]# sed '1h;2,3H;$G'  file.txt

6. sed 파일 에 주석 추가
1.            
[root@lb03 ~]# sed  's#^#\##g'  file.txt

2.            
   :
[root@lb03 ~]# cat file.txt
    root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin
    #lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
    #    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

      :
[root@lb03 ~]# sed  's/^[ \t#]*/#/g'  file.txt
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt

3. passwd                 (    )
[root@lb03 ~]# sed  -r  's#(.*)(:x.*:)(.*)#\3\2\1#g'  passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon

좋은 웹페이지 즐겨찾기