awk
  • -F 指定分割符

  • print $1 输出第一列

  • $0 表示所有段

  • 不指定分割符,默认空白字符为分割符

  • '{print $1,$2}'输出1,2两列

[root@mingming awk]# tail passwd |awk -F':' '{print $1}'dbus
vcsa
rpc
saslauth
postfix
rpcuser
nfsnobody
haldaemon
sshd
smbuser1
  • 指定#为分割

[root@mingming awk]# tail passwd |awk -F':' '{print$1"#"$2}'dbus#xvcsa#xrpc#xsaslauth#xpostfix#xrpcuser#xnfsnobody#xhaldaemon#xsshd#xsmbuser1#x[root@mingming awk]# tail passwd |awk -F':' '{OFS="#"} {print$1,$2}'dbus#xvcsa#xrpc#xsaslauth#xpostfix#xrpcuser#xnfsnobody#xhaldaemon#xsshd#xsmbuser1#x
  • awk 匹配功能

[root@mingming awk]# awk '/oo/' passwdroot:x:0:0:root:/root:/bin/bashlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinr.ouucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologin[root@mingming awk]# awk -F ':' '$1 ~ /oo/' passwdroot:x:0:0:root:/root:/bin/bash[root@mingming awk]# awk -F':' '/root/ {print $1} /user/ {print $1,$2}' passwdroot
operator
saslauth x
rpcuser x
smbuser1 x
  • 针对数学表达式

[root@mingming awk]# awk -F':' '$3==0 {print $1,$3}' passwdroot 0[root@mingming awk]# awk -F':' '$3>=1000 {print $1,$3}' passwdnfsnobody 65534[root@mingming awk]# awk -F':' '$7!="/sbin/nologin" {print $1,$3,$7}' passwdroot 0 /bin/bash
sync 5 /bin/syncshutdown 6 /sbin/shutdownhalt 7 /sbin/haltrio
mail 8 /sbin/nologinr.o
smbuser1 500 /bin/bash

字段比较

[root@mingming awk]# awk -F':' '$3>$4 {print $0}' passwdsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltriooperator:x:11:0:operator:/root:/sbin/nologinsaslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin[root@mingming awk]# awk -F':' '$3==$4 {print $0}' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinrpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinsmbuser1:x:500:500::/home/smbuser1:/bin/bash[root@mingming awk]# awk -F':' '$3>1 && $3<5 {print $0}' passwddaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  • OFS加上分隔符

  • NR 显示行

  • NF 显示段

[root@mingming awk]# tail passwd |awk -F':' '{OFS="#"} {print$1,$2}'dbus#xvcsa#xrpc#xsaslauth#xpostfix#xrpcuser#xnfsnobody#xhaldaemon#xsshd#xsmbuser1#x[root@mingming awk]# awk -F':' '{print NR":"$1,$2,$3}' passwd1:root x 02:bin x 13:daemon x 24:adm x 35:lp x 46:sync x 57:shutdown x 68:halt x 79:mail x 810:uucp x 1011:operator x 1112:games x 1213:gopher x 1314:ftp x 1415:nobody x 9916:dbus x 8117:vcsa x 6918:rpc x 3219:saslauth x 49920:postfix x 8921:rpcuser x 2922:nfsnobody x 6553423:haldaemon x 6824:sshd x 7425:smbuser1 x 500[root@mingming awk]# awk -F':' 'NR<=5' passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  • 赋值

[root@mingming awk]# head -n 3 passwd |awk -F ':' '$1="root"'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@mingming awk]# head -n 3 passwd |awk -F ':' '$1=="root"'root:x:0:0:root:/root:/bin/bash
  • $3的求和

[root@mingming awk]# awk -F':' '{(tot=tot+$3)}; END {print tot}' passwd67170