grep,sed,awkと簡単な正規表現の応用


grep,sed,awkと簡単な正規表現の応用
ここで使用するテストファイルはlinux/etc/passwdファイルで、ファイルの内容が破損するようにコピーして練習することが望ましい.やはり多く练习してやっととても良い使うことができると感じて、习题のここは贴らないで、ネット上で一大を探します.
grep:  -oは、何回フィールド  -cが印刷されて要求に合致する行数  -nが要求に合致する行を出力すると同時に行番号  -vを印刷して要求に合致しない行 -Aを印刷した後、1つのデジタルps-A 2が印刷要求に合致する行と次の2行 -Bの後に1つのデジタルps-B 2が印刷要求に合致する行と上の2行を表すC-C次の数字ps-C 2は、印刷が要求に合致する行と上下の2行
                   grep -n 'root' passwd
                    grep -n -v 'root' passwd
                  grep -n '[0-9]' passwd
              grep -n -v '[0-9]' passwd
     #     :grep -n -v '^#' passwd
     #    :grep -v '^#'|grep -v '^$'
            grep '^[^0-9]' 1.txt
               grep '[a-zA-Z]' passwd
            grep 'r.o' passwd;grep 'r*t' passwd; grep 'r.*t' passwd

^      ,    [^]         )
[^a]  “    a     ”。
[^a-zA-Z0-9]  “              ”。
[\^abc]  “         a  b  c”。
[^\^]  “             。

* 0    *     
.       (      )
?   0    ?     
+        +     
.*           

注意:
+ ? | grep   (   -E  ),egrep   
(oo)* 0    oo
(oo){1,2}     1  2 

sed:(-nとpの組み合わせ、その他は使用しません)
     sed '10p' -n passwd; sed '1,4p' -n passwd; sed '5,$p'  -n 1.txt
            sed -n '/root/p' passwd     ^ . * $
-e              sed -e '/root/p' -e '/body/p' -n passwd
    ;      sed '/root/p'; /body/p' -n passwd
    sed ‘/root/d’  passwd; sed '1d' passwd; sed '1,10d' passwd
   sed '1,2s/ot/to/g' passwd   s      ,g     ,        ,/    #,@ 
        sed 's/[0-9]//g' passwd
         sed '/[^0-9]//g' passwd
  2        head -n2 passwd | sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/'
         sed -i 's/ot/to/g' passwd
sed 's/[a-z]/\u&/g' passwd              
sed 's/[A-Z]/\l&g' passwd               

awk:
         awk -F ':' '{print $1}' passwd
                 awk -F ':' '{print $1"#"$2"#"$3"#"$4}' passwd
          awk '/oo/' passwd
        awk -F ':' '$1~/oo/' passwd
     awk -F ':' '/root/ {print $1,$3};$1 ~/test/;$3 ~/20/' passwd
     : == > < != >= <= 
    awk -F ':' '$3==0' passwd
    awk -F ':' '$3>500' passwd
    awk -F ':' '$7!="/sbin/nologin"' passwd
    awk -F ':' '$3$5 && $3$4 || $7="/bin/bash"' passwd

awk     NF(  ) NR(  )
    head -n3 1.txt | awk -F ':' '{print NF}'
    head -n3 1.txt | awk -F ':' '{print $NF}'       
    head -n3 1.txt | awk -F ':' '{print NR}'     
      20      awk 'NR>20' passwd
    awk -F ':' 'NR>20 && $1~/ssh/' passwd
            awk -F ':' '$1="root"' passwd
        ,            ,       
        awk -F ':' '{$7=$3+$4;print $0}' passwd
             awk -F ':' '{(tot=tot+$3)}; END {print tot}' passwd
    awk      if    awk -F ':' '{if($1=="root")print $0}' passwd