awk功能强大,在这里记录下<shell脚本专家指南>学习的简单例子,以便日后之用。
awk用法
例:抽取多个输入域并重新排序
[root@master ~]# VAR="The quick brown fox jumped over the lazy dog." [root@master ~]# echo $VAR The 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/hosts 127.0.0.1 localhost.localdomain localhost 192.168.4.44 www.chongining.com
例:确定域的数目及最后一个域
[root@master ~]# echo $VAR The 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=$TheCount brown
例: 显示域的范围
[root@master ~]# echo $VAR The 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 5 rown
例:使用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之间的一个随机数