awk功能强大,在这里记录下<shell脚本专家指南>学习的简单例子,以便日后之用。

awk用法

例:抽取多个输入域并重新排序

[root@master ~]# VAR="The quick brown fox jumped over the lazy dog."[root@master ~]# echo $VARThe quick brown fox jumped over the lazy dog.[root@master ~]# echo $VAR | awk '{print $1,$8,$4,$5,$6,$7,$3,$9}'The lazy fox jumped over the brown dog.

例:指定域分隔符

[root@master ~]# echo $VAR |awk -F o '{print $1}'   指定o为域的分隔符The quick br

例:几个值的匹配域

[root@master ~]# awk '$1 ~ /^127|^192/ {print $0}' /etc/hosts127.0.0.1       localhost.localdomain   localhost192.168.4.44    www.chongining.com

例:确定域的数目及最后一个域

[root@master ~]# echo $VARThe quick brown fox jumped over the lazy dog.[root@master ~]# echo $VAR | awk '{print NF}'9[root@master ~]# echo $VAR | awk '{print $NF}'dog.[root@master ~]# echo $VAR | awk '{print $(NF-1)}'lazy

例: 给awk传送变量

[root@master ~]# TheCount=3[root@master ~]# echo $VAR | awk '{print $counter}' counter=$TheCountbrown

例: 显示域的范围

[root@master ~]# echo $VARThe quick brown fox jumped over the lazy dog.[root@master ~]# echo $VAR | awk '{for (i=3;i<=NF;i++){printf "%s ", $i};print ""}'brown fox jumped over the lazy dog.[root@master ~]# end=6[root@master ~]# echo $VAR | awk '{for (i=3;i<='$end';i++){printf "%s ",$i};print ""}'brown fox jumped over

例: 使用awk确定串的长度

[root@master ~]# echo $VAR |awk '{print length}'45[root@master ~]# expr length "$VAR"45

例:显示一个子串

[root@master ~]# echo $VAR | awk '{print substr ($3,2,4)}'rown[root@master ~]# expr substr "$VAR" 12 5rown

例:使用awk进行列求和计算

[root@master opt]# ls -l *.rpm | awk '{total+=$5} END {print total/1024/1024}'18.0105

例:使用awk产生随机数

[root@master opt]# echo | awk '{srand();print int(100*rand())}'38

注:产生0-100之间的一个随机数