-F ':' 指定分隔符 $1第一列linux
[root@glinux-01 ~]# awk -F ':' '{print $1,$3}' pw.txt |head -5 root 0 bin 1 daemon 2 adm 3 lp 4
$1"#"$3c#
[root@glinux-01 ~]# awk -F ':' '{print $1"#"$3"#"}' pw.txt |head -5 root#0# bin#1# daemon#2# adm#3# lp#4#
匹配含有oo的行 '/oo/{print $1,$2,$3}'匹配含有oo的行,並打印123列bash
[root@glinux-01 ~]# awk '/oo/' pw.txt root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin [root@glinux-01 ~]# awk -F ':' '/oo/{print $1,$2,$3}' pw.txt 匹配含有oo的行,並打印123列 root x 0 lp x 4 mail x 8 operator x 11 postfix x 89
在第一列中匹配含有oo行函數
[root@glinux-01 ~]# awk -F ':' '$1 ~ /oo/' pw.txt root:x:0:0:root:/root:/bin/bash
多個條件匹配post
[root@glinux-01 ~]# awk -F ':' '/root/{print $1,$2} /ggg/ {print $1}' pw.txt//若是一行中有兩個關鍵詞打印兩次 root x operator x ggg1 ggg2 [root@glinux-01 ~]# awk -F ':' '/root|ggg/ {print $1}' pw.txt 或者這樣寫 root operator ggg1 ggg2
條件判斷 第三列大於1000的行spa
[root@glinux-01 ~]# awk -F ':' '$3>=1000' pw.txt ggg1:x:1000:1000::/home/ggg1:/bin/bash ggg2:x:1001:1001::/home/ggg2:/bin/bash g1:x:1002:1002::/home/g1:/bin/bash
awk -F ':' '$3>="1000"' pw.txt 若是1000加雙引號,表明字符,不是數字code
第三列不等於1000的行it
[root@glinux-01 ~]# awk -F ':' '$3!=1000' pw.txt|head -5 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
第三列大於第四列awk
[root@glinux-01 ~]# awk -F ':' '$3>$4' pw.txt|head -5 sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin [root@glinux-01 ~]# awk -F ':' '$3>$4 && $3<=7' pw.txt|head -5 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@glinux-01 ~]# awk -F ':' '$3>$4 && $3<=7 && $7 ~ /sbin/' pw.txt|head -5 //而且第7行含有sbin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt
更換分割符{OFS="#"}mail
[root@glinux-01 ~]# awk -F ':' '{OFS="#"}{print $1,$2}' pw.txt|head -5 root#x bin#x daemon#x adm#x lp#x [root@glinux-01 ~]# awk -F ':' '{OFS="#"} $3>$4 {print $1,$2}' pw.txt|head -5 sync#x shutdown#x halt#x operator#x polkitd#x [root@glinux-01 ~]# awk -F ':' '{OFS="#"} {if($3>$4) {print $1,$2}}' pw.txt|head -5同上一條
打印行號 print NR
[root@glinux-01 ~]# awk -F ':' '$3>$4 {print NR ":" $1}' pw.txt|head -5 6:sync 7:shutdown 8:halt 10:operator 16:polkitd
打印有幾列 NF
[root@glinux-01 ~]# awk -F ':' '$3>$4 {print NF ":" $1}' pw.txt|head -5 7:sync 7:shutdown 7:halt 7:operator 7:polkitd
也可用NR,NF作條件判斷 'NR>10 || NF<5 {print $1}'
將第一列更改成root,可是會去掉分隔符,須要用OFS添加
[root@glinux-01 ~]# awk -F ':' '$1="root"' pw.txt|head -3 root x 0 0 root /root /bin/bash root x 1 1 bin /bin /sbin/nologin root x 2 2 daemon /sbin /sbin/nologin [root@glinux-01 ~]# awk -F ':' '{OFS=":"}$1="root"' pw.txt|head -3 root:x:0:0:root:/root:/bin/bash root:x:1:1:bin:/bin:/sbin/nologin root:x:2:2:daemon:/sbin:/sbin/nologin
函數運算,將第三列累加,並打印
[root@glinux-01 ~]# awk -F ':' '{(sum=sum+$3)};END {print sum}' pw.txt 5608