awk使用實例詳解

1、print相關實例
linux

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print $2,$4}'數組

wKioL1ctbTijVtyKAABNIUgmmCQ157.png

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print "hello:"$1}'bash

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print "hello:" $1}'tcp

wKiom1ctbF_QTe2pAAEEqB_Lr1s761.png

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print "hello:$1"}'ide

wKioL1ctbTnA1lvoAAA81PGVf7E398.png

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print "hello:"$1 1234567}'函數

    [root@localhost ~]# tail -4 /etc/fstab | awk  '{print "hello:"$1,1234567}'ui

wKioL1ctbTnjqJ6dAAEmxsZgDIk157.png

 

 

 

2、變量使用實例spa

     -F:等於-v FS=':'3d

    [root@localhost ~]# tail -3 /etc/passwd | awk -F: '{print $1 }'orm

    [root@localhost ~]# tail -3 /etc/passwd | awk -v FS=':' '{print $1 }'

wKiom1ctbGCDLPLVAABcorisf64953.png

    [root@localhost ~]# tail -3 /etc/passwd | awk -v FS=':' '{print $1,$3,$7 }'

    [root@localhost ~]# tail -3 /etc/passwd | awk -v FS=':' -v OFS='@' '{print $1,$3,$7 }'

wKiom1ctbGCiElGEAACd1nDi1hw067.png

    [root@localhost ~]# head -5 /etc/fstab | awk '{print NF}'

    [root@localhost ~]# head -5 /etc/fstab | awk '{print $NF}'

wKioL1ctbTriqAfjAABicidZ7zw780.png

    [root@localhost ~]# tail -4 /etc/fstab | awk '{print NR}'

wKiom1ctbGHTPz26AAAsVdrez5A921.png

    [root@localhost ~]# awk '{print FILENAME}' /etc/fstab /etc/issue

wKioL1ctbTrT-HhjAABvJGRt1A4901.png

    [root@localhost ~]# awk 'BEGIN{print ARGC}' /etc/fstab /etc/issue

    [root@localhost ~]# awk 'BEGIN{print ARGV[0]}' /etc/fstab /etc/issue

    [root@localhost ~]# awk 'BEGIN{print ARGV[1]}' /etc/fstab /etc/issue

    [root@localhost ~]# awk 'BEGIN{print ARGV[2]}' /etc/fstab /etc/issue

wKioL1ctbTrQDPJLAACgRNj84Ck792.png

    [root@localhost ~]# awk -v test='hello world' 'BEGIN{print test}'

    [root@localhost ~]# awk 'BEGIN{test="hello world";print test}'

wKiom1ctbGGTXDarAABPNUmepq4127.png

 

 

 

3、printf實例

    [root@localhost ~]# tail -3 /etc/passwd | awk -F: '{printf "%s",$1}'    # 默認在一行顯示

    [root@localhost ~]# tail -3 /etc/passwd | awk -F: '{printf "%s\n",$1}'

    [root@localhost ~]# tail -3 /etc/passwd | awk -F: '{printf "Username:%s\n",$1}'

wKioL1ctbTvxfuTYAACTBPCtUKA655.png

    [root@localhost ~]# tail -3 /etc/passwd | awk -F: '{printf "Username:%s,UID:%d\n",$1,$3}'

wKiom1ctbGLww9yeAABUvOf1Yxw187.png

    [root@localhost ~]#  head -3 /etc/passwd | awk -F: '{printf "Username: %10s, UID:%d\n",$1,$3}'

    [root@localhost ~]#  head -3 /etc/passwd | awk -F: '{printf "Username: %-10s, UID:%d\n",$1,$3}'

wKiom1ctbGLi_2iJAACfOXRhjsY955.png

 

 

 

4、條件判斷操做符實例

    [root@localhost ~]# tail -5 /etc/passwd | awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or SysUser";printf "%-15s:%-s\n",$1,usertype}'

wKioL1ctbTzh8AZzAACYG9HDfg8084.png

 

 

5、PATTERN使用實例

    [root@localhost ~]# awk '/^UUID/ {print $1}' /etc/fstab

wKioL1ctbTyRI3ZsAAB6JHsZyps546.png

    [root@localhost ~]# awk '!/^UUID/ {print $1,$2}' /etc/fstab

wKiom1ctbGOQJ7UeAAA9ljX4WWI325.png

    [root@localhost ~]# awk -F: '$3>=900{printf "%-30s,%d\n",$1,$3}' /etc/passwd

wKiom1ctbGPA-nLkAACFUxqYnxk473.png

    [root@localhost ~]# awk -F: '$NF=="/bin/bash"{printf "%-20s%s\n",$1,$NF}' /etc/passwd

    [root@localhost ~]# awk -F: '$NF~/bash$/{printf "%-20s%s\n",$1,$NF}' /etc/passwd

wKioL1ctbT3yw2zJAABqETtp-8E332.png

    [root@localhost ~]# awk -F: '(NR>=10&&NR<=15){print $1}' /etc/passwd

wKiom1ctbGTxiYO9AABMAFF7X6U158.png

    [root@localhost ~]# tail -5 /etc/passwd | awk -F: 'BEGIN{print "username            uid       \n-----------------------------"}{printf "%-20s%d\n",$1,$3}'

wKioL1ctbT2SyoAhAABvjBt4tqc249.png

    [root@localhost ~]# tail -5 /etc/passwd | awk -F: '{print "username            uid       \n-----------------------------";printf "%-20s%d\n",$1,$3}'

wKiom1ctbGSha_plAACRoMyWQxU057.png

    [root@localhost ~]#  tail -5 /etc/passwd | awk -F: 'BEGIN{print "username            uid       \n-----------------------------"}{printf "%-20s%d\n",$1,$3}END{print"===================\n end"}'

wKioL1ctbT6jtlXDAAB7Z33lG-Q156.png

 

 

6、if-else語句

    [root@localhost ~]# awk -F: '{if($3>=900) print $1,$3}' /etc/passwd

wKioL1ctbT7i8d0-AAB753hf_sg600.png

    [root@localhost ~]# 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}}'

wKiom1ctbGXw7zZzAACj42w1lZc777.png

    [root@localhost ~]# awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd

wKiom1ctbGXzq1T6AAAygfmoy0w131.png

    [root@localhost ~]# df -h

    [root@localhost ~]#  df -h | awk -F[%] '/^\/dev/{print $1}' | awk '{if($NF>=20) print $1}'

wKioL1ctbT_Q4xyGAADmqkhxo8s942.png

 

 

7、while循環

    [root@localhost ~]# awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i); i++}}' /etc/grub2.cfg

wKioL1ctbT_iezvoAADVwYrWr7Y730.png

    [root@localhost ~]#  awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=7) {print $i,length($i)};

wKiom1ctbGaSHD7xAADIu0VQRO4897.png

 

 

8、for循環

    [root@localhost ~]# awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}' /etc/grub2.cfg

wKioL1ctbUCDP6K-AADgjdU56g4912.png

 

 

9、next   

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

wKiom1ctbGeQEgQ_AABW2bjuAv8768.png

 

 

10、數組

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

wKiom1ctbGfDbZO5AAATk3TzFDo457.png

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

wKiom1ctbjWi3LurAAAPVUmrcKg413.png

    [root@localhost ~]# awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}' /etc/fstab    # 遍歷文件統計單詞出現次數

wKioL1ctbw6C5Bg0AABGh_d6rfQ800.png

 

 

11、函數

    [root@localhost ~]# netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}'

wKiom1ctbjWRDLu7AAAT4-KRLqA167.png

相關文章
相關標籤/搜索