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