awkコマンドコピースクリーン

45711 ワード

           ,awk             , {print $0}    

           ,      , action       ,    action,         。

     ,            ,      RS              。

awk 、 。
。 if , if , 。
, 。
, 。
, 、 awk 。

awk ( /etc/passwd ) 。

awk (Pattern) (Actions)。 pattern ### 5 4, [root@
250-shiyan dev]# cd /dev [root@250-shiyan dev]# ll|awk '$5~/^4,/' ### 3 0 [root@250-shiyan sh]# ps -ajx|awk '$3~/^0$/' Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:00 [migration/0] 2 4 0 0 ? -1 S 0 0:00 [ksoftirqd/0] 2 5 0 0 ? -1 S 0 0:00 [migration/0] [root@250-shiyan sh]# ps -ajx|awk '$3!~/^0$/' Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 1 1 1 ? -1 Ss 0 0:01 /sbin/init 1 381 381 381 ? -1 S<s 0 0:00 /sbin/udevd -d 1 958 958 958 ? -1 S<sl 0 0:04 auditd 1 997 997 997 ? -1 Ss 32 0:05 rpcbind [root@250-shiyan awk]# cat grade.txt M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yellow 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28 ### : / /: 。 : , , $2>%1 。 : ~( ) ~!( )。 , : 。 BEGIN END 。 BEGIN: , 。BEGIN awk , 。 BEGIN{ Actions} END: 。END awk , 。
Unix awk ,BEGIN END, pattern ( awk ), BEGIN END 。
BEGIN ( {} ) Unix awk , END 。 , BEGIN ( ) , END 。

(True or  False)。awk &&(and),||(or),!(not) ,
, 。
###
/ /: 。 [root@250-shiyan awk]# cat pa.awk /^(L|P)/ [root@250-shiyan awk]# awk -f pa.awk grade.txt P.Bunny 02/99 48 Yellow 12 35 28 L.Tansley 05/99 4712 Brown-2 12 30 28 [root@250-shiyan awk]# cat pa.awk /^(L|P)/ /[uo]l/ [root@250-shiyan awk]# awk -f pa.awk grade.txt J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yellow 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28 ### [root@250-shiyan awk]# cat pa.awk $5 ~ /^[0-9]$/ [root@250-shiyan awk]# awk -f pa.awk grade.txt M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 ### : , , $2>$1 。 [root@250-shiyan awk]# cat pa.awk $5 > 10 && $6 < 31 [root@250-shiyan awk]# awk -f pa.awk grade.txt J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28 ### , : 。 BEGIN END 。 [root@250-shiyan awk]# cat pa.awk $6 == 24 , $6 == 26 [root@250-shiyan awk]# awk -f pa.awk grade.txt J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yellow 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 ###BEGIN: , 。 awk BEGIN , FS( ) 、 。 BEGIN and END patterns cannot have missing action parts. ###END: 。awk , END 。awk 。 ,END 。 ### , [root@250-shiyan awk]# cat pa.awk /[uo]l/ {print $3 $5} [root@250-shiyan awk]# awk -f pa.awk grade.txt 483179 484212 action 、 、 , , 。 : ### [root@250-shiyan awk]# cat pa.awk $5 ~ /^[0-9]$/ {print $6 + 10} [root@250-shiyan awk]# awk -f pa.awk grade.txt 50 34 ### [root@250-shiyan awk]# cat pa.awk $4 == "Brown-3" {print $3} [root@250-shiyan awk]# awk -f pa.awk grade.txt 4842 ### [root@250-shiyan awk]# cat pa.awk {print ($6 > 30 ? "ok "$6: "error "$6)} [root@250-shiyan awk]# awk -f pa.awk grade.txt ok 40 error 24 ok 35 error 26 error 30 ### , [root@250-shiyan awk]# cat pa.awk /[uo]l/ {print $3,$5} [root@250-shiyan awk]# awk -f pa.awk grade.txt 48317 9 4842 12 ### [root@250-shiyan awk]# cat blank BEGIN { x=0 } /^$/ { x=x+1 } END { print "I found " x " blank lines. :)" } [root@250-shiyan awk]# awk -f blank /etc/logrotate.conf I found 6 blank lines. :)
### , 4096
[root@250-shiyan awk]# cat pa.awk
BEGIN{size=0;print "[start] size is ", size}
{if($5!=4096){size+=$5;print size}}
END{print "[end]   size is ", size}
[root@250-shiyan awk]# ll|awk -f pa.awk
[start] size is  0
0
86
1441
1485
1716
1847
[end]   size is  1847
### shell#snmpwalk
-v 2c -c flt123 192.168.2.250 hrSWRunPerfMem|sed '/: 0 KB/d'|cut -d " " -f4|awk '{s+=$1}END{print s}' 1.txt 1 1 1 1 2 2 3 2 3 3 4 5 shell#cat 1.txt |awk '{(list1+=$1)(list2+=$2)(list3+=$3)(list4+=$4)}END{print list1,list2,list3,list4}' 6 6 8 8 shell#awk '{col1+=$1;col2+=$2;col3+=$3;col4+=$4}END{print col1,col2,col3,col4}' file , 。 , 4096 ( ): ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size+=$5;}} END{print "[end] size is ", size}' ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size+=$5;}} END{print "[end] size is ", size/1024/1024,"M"}' ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}' [root@250-shiyan log]# cat messages-20141012|awk '/(STOP)|(error)/'   STOP error [root@250-shiyan log]# more messages-20141019|awk '/13/' 13 [root@250-shiyan log]# more messages-20141019|awk '$2~/13/' 13 [root@250-shiyan log]# more messages-20141019|awk '$2!~/13/' 13 [root@250-shiyan log]# more messages-20141019|awk '$3=="10:16:04"' [root@250-shiyan log]# more messages-20141019|awk '/[Gg]reen/' [root@250-shiyan log]# more messages-20141019|awk '$3~/^...4/' 3 4 ,^ ,. [root@250-shiyan log]# cat cron-20141019|awk '/(Anacron)|(Job)/' | , , [root@250-shiyan log]# echo $PWD | awk -F/ '{print$NF}'

 
action       ,          ,          /pattern/{action}。 

###          。  ://{//{gsub(..)};//{print $0}

[root@250-shiyan awk]# cat >pa.awk

{gsub(/42/,50);print $0}

[root@250-shiyan awk]# awk -f pa.awk grade.txt

M.Tansley       05/99   48311   Green     8     40     44

J.Lulu          06/99   48317   green     9     24     26

P.Bunny         02/99   48      Yellow    12    35     28

J.Troll         07/99   4850    Brown-3   12    26     26

L.Tansley       05/99   4712    Brown-2   12    30     28



###            。      /pattern/{action}  

[root@250-shiyan awk]# cat >pa.awk

gsub(/42/,50){print $0}

[root@250-shiyan awk]# awk -f pa.awk grade.txt

J.Troll         07/99   4850    Brown-3   12    26     26



###         ,     ,       ,       。  :/gsub()/{print $0};//{print $0} 

[root@250-shiyan awk]# cat >pa.awk

gsub(/42/,50);

{print $0}

[root@250-shiyan awk]# awk -f pa.awk grade.txt

M.Tansley       05/99   48311   Green     8     40     44

J.Lulu          06/99   48317   green     9     24     26

P.Bunny         02/99   48      Yellow    12    35     28

J.Troll         07/99   4850    Brown-3   12    26     26

J.Troll         07/99   4850    Brown-3   12    26     26

L.Tansley       05/99   4712    Brown-2   12    30     28

 awkの付与比較
[root@84-monitor ~]# lsof -c rpcbind|awk '/mem/'|awk '(to+=$7);END{print "FD total: " to}'

rpcbind 32580  rpc  mem    REG              253,0    65928  521865 /lib64/libnss_files-2.12.so

rpcbind 32580  rpc  mem    REG              253,0  1921176  521231 /lib64/libc-2.12.so

rpcbind 32580  rpc  mem    REG              253,0   142640  521255 /lib64/libpthread-2.12.so

rpcbind 32580  rpc  mem    REG              253,0    19536  521861 /lib64/libdl-2.12.so

rpcbind 32580  rpc  mem    REG              253,0    36584  521220 /lib64/libgssglue.so.1.0.0

rpcbind 32580  rpc  mem    REG              253,0   113432  521863 /lib64/libnsl-2.12.so

rpcbind 32580  rpc  mem    REG              253,0   162016  521225 /lib64/libtirpc.so.1.0.10

rpcbind 32580  rpc  mem    REG              253,0    40792  521329 /lib64/libwrap.so.0.7.6

rpcbind 32580  rpc  mem    REG              253,0   154624  521489 /lib64/ld-2.12.so

FD total: 2656728


#### FD mem , [root@
84-monitor ~]# lsof -c rpcbind|grep mem|awk '{to+=$7};END{print "total: " to}' total: 2656728
#### 123 ,
[root@84-monitor ~]# size /usr/bin/ab|tail -1|awk '(a=$1+$2+$3);{print a}'
  45491    2072   15848   63411    f7b3 /usr/bin/ab
63411
action , ,
/pattern/{action}。 END awk , 。 。 , , , awk '(to+=$7);END{print "FD total: " to}'

 awkのパイプとリダイレクト
[root@250-shiyan ~]# lsof -c rpcbind|grep mem|awk '{print $7,$8 > "rpcmem"}'
[root@250-shiyan ~]# cat rpcmem
65928 260640
1921216 260624
142640 260648
19536 260630
36584 261105
113432 260634
162016 261107
40792 260725
154520 260617

, 。
sort ASCII , sort
-n [root@250-shiyan ~]# lsof -c rpcbind|grep mem|awk '{print $7|"sort"}' 113432 142640 154520 162016 1921216 19536 36584 40792 65928 [root@250-shiyan ~]# lsof -c rpcbind|grep mem|awk '{print $7|"sort -n"}' 19536 36584 40792 65928 113432 142640 154520 162016 1921216 sort tab , -t "," sort -n -k2 [root@250-shiyan ~]# lsof -c rpcbind|grep mem|awk '{print $7,$8}' 65928 260640 1921216 260624 142640 260648 19536 260630 36584 261105 113432 260634 162016 261107 40792 260725 154520 260617 [root@250-shiyan ~]# lsof -c rpcbind|grep mem|awk '{print $7,$8|"sort -n -k2"}' 154520 260617 1921216 260624 19536 260630 113432 260634 65928 260640 142640 260648 40792 260725 36584 261105 162016 261107

 
3月31日9時から12時までのログをフィルタリングし、grepには2つのコマンドgrep-E「Mar 31 0[89]:」messages>efiejigrep-E「Mar 31 1[02]:」messages>wefefの下にあるこのコマンドが必要であり、3月31日9時から10時までのログを純粋にフィルタリングすることはできません.grep-E"Mar 31 09:|10:"messagesの下でこの1回で目的を達成することができて、3つの命令の進化の過程、思考の過程は簡単から複雑まで、命令は複雑から簡単まで.awk -F "]"'$1~/Mar 31 09:|Mar 31 1[012]:/{print $0}' messages >iiiawk '/Mar 31 (09:|10:|11:|12:)/' messages  >ooooawk '/Mar 31 (09:|1[012]:)/' messages  >uuu