天天看點

awk使用執行個體詳解

一、print相關執行個體

    [root@localhost ~]#

tail -4 /etc/fstab | awk  '{print $2,$4}'

awk使用執行個體詳解

tail -4 /etc/fstab | awk  '{print

"hello:"$1}'

"hello:" $1}'

awk使用執行個體詳解

"hello:$1"}'

awk使用執行個體詳解

"hello:"$1 1234567}'

"hello:"$1,1234567}'

awk使用執行個體詳解

二、變量使用執行個體

     -F:等于-v FS=':'

tail -3 /etc/passwd | awk -F: '{print $1 }'

tail -3 /etc/passwd | awk -v FS=':' '{print $1 }'

awk使用執行個體詳解

tail -3 /etc/passwd | awk -v FS=':' '{print $1,$3,$7 }'

tail -3 /etc/passwd | awk -v FS=':' -v OFS='@' '{print $1,$3,$7 }'

awk使用執行個體詳解

head -5 /etc/fstab | awk '{print NF}'

head -5 /etc/fstab | awk '{print $NF}'

awk使用執行個體詳解

tail -4 /etc/fstab | awk '{print NR}'

awk使用執行個體詳解

awk '{print FILENAME}' /etc/fstab /etc/issue

awk使用執行個體詳解

awk 'BEGIN{print ARGC}' /etc/fstab /etc/issue

awk 'BEGIN{print ARGV[0]}' /etc/fstab /etc/issue

awk 'BEGIN{print ARGV[1]}' /etc/fstab /etc/issue

awk 'BEGIN{print ARGV[2]}' /etc/fstab /etc/issue

awk使用執行個體詳解

awk -v test='hello world' 'BEGIN{print test}'

awk 'BEGIN{test="hello world";print test}'

awk使用執行個體詳解

三、printf執行個體

    [root@localhost ~]# tail -3 /etc/passwd

| awk -F: '{printf "%s",$1}'    # 預設在一行顯示

tail -3 /etc/passwd | awk -F: '{printf "%s\n",$1}'

tail -3 /etc/passwd | awk -F: '{printf "Username:%s\n",$1}'

awk使用執行個體詳解

tail -3 /etc/passwd | awk -F: '{printf "Username:%s,UID:%d\n",$1,$3}'

awk使用執行個體詳解

    [root@localhost

~]#  head -3 /etc/passwd | awk -F:

'{printf "Username: %10s, UID:%d\n",$1,$3}'

'{printf "Username: %-10s, UID:%d\n",$1,$3}'

awk使用執行個體詳解

四、條件判斷操作符執行個體

tail -5 /etc/passwd | awk -F: '{$3>=1000?usertype="Common

User":usertype="Sysadmin or SysUser";printf

"%-15s:%-s\n",$1,usertype}'

awk使用執行個體詳解

五、PATTERN使用執行個體

awk '/^UUID/ {print $1}' /etc/fstab

awk使用執行個體詳解

awk '!/^UUID/ {print $1,$2}' /etc/fstab

awk使用執行個體詳解

awk -F: '$3>=900{printf "%-30s,%d\n",$1,$3}' /etc/passwd

awk使用執行個體詳解

awk -F: '$NF=="/bin/bash"{printf "%-20s%s\n",$1,$NF}'

/etc/passwd

awk -F: '$NF~/bash$/{printf

"%-20s%s\n",$1,$NF}' /etc/passwd

awk使用執行個體詳解

awk -F: '(NR>=10&&NR<=15){print $1}' /etc/passwd

awk使用執行個體詳解

tail -5 /etc/passwd | awk -F: 'BEGIN{print "username            uid      

\n-----------------------------"}{printf

"%-20s%d\n",$1,$3}'

awk使用執行個體詳解

tail -5 /etc/passwd | awk -F: '{print "username            uid      

\n-----------------------------";printf

awk使用執行個體詳解

~]#  tail -5 /etc/passwd | awk -F:

'BEGIN{print "username           

uid      

"%-20s%d\n",$1,$3}END{print"===================\n end"}'

awk使用執行個體詳解

六、if-else語句

awk -F: '{if($3>=900) print $1,$3}' /etc/passwd

awk使用執行個體詳解

tail -5 /etc/passwd | awk -F: '{if($3>=1000) {printf "Common

user:%-34sUid:%d\n",$1,$3} else {printf "Root or

Sysuser:%-30sUid:%d\n",$1,$3}}'

awk使用執行個體詳解

awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd

awk使用執行個體詳解

df -h

~]#  df -h | awk -F[%] '/^\/dev/{print

$1}' | awk '{if($NF>=20) print $1}'

awk使用執行個體詳解

七、while循環

awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i); i++}}'

/etc/grub2.cfg

awk使用執行個體詳解

~]#  awk

'/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=7) {print

$i,length($i)};

awk使用執行個體詳解

八、for循環

awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}'

awk使用執行個體詳解

九、next   

tail -10 /etc/passwd | awk -F: '{if($3%2!=0) next; print $1,$3}'

awk使用執行個體詳解

十、數組

netstat -tan | awk '/^tcp\>/{state[$NF]++}END{for(i in state) { print

i,state[i]}}'

awk使用執行個體詳解

awk '/^UUID/{fs[$3]++}END{for(i in fs) {print i,fs[i]}}' /etc/fstab

awk使用執行個體詳解

    [root@localhost ~]# awk

'{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}'

/etc/fstab    # 周遊檔案統計單詞出現次數

awk使用執行個體詳解

十一、函數

netstat -tan | awk

'/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count)

{print i,count[i]}}'

awk使用執行個體詳解

繼續閱讀