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之间的一个随机数