示例:
awk 'BEGIN{srand(); for (i=1;i<=10;i++)print int(rand()*100) }' echo "2008:08:08 08:08:08" | awk 'sub(/:/,“-",$1)' echo "2008:08:08 08:08:08" | awk ‘gsub(/:/,“-",$0)' netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}' awk BEGIN'{system("hostname") }' awk 'BEGIN{score=100; system("echo your score is " score) }'自定义函数,格式为
function fname ( arg1,arg2 , ... ) { statements return expr }自定义函数中fname为函数名,arg1...为函数的参数,statements是动作语言,return expr为由statements的结果从而决定最终函数所显示的内容。
示例:
awk的脚本就是将awk程序写成脚本形式,来直接调用或直接执行。例如上面写自定义函数的样子也算是脚本。
格式1: BEGIN{} pattern{} END{} 格式2: \#!/bin/awk -f \#add 'x' right BEGIN{} pattern{} END{}格式1假设为f1.awk文件,格式2假设为f2.awk文件,那么用法是:
awk [-v var=value] f1.awk [file]
f2.awk [-v var=value] [var1=value1] [file]
对于awk [-v var=value] f1.awk [file]来说,很好理解,就是把处理阶段放到一个文件而已,真正展开后,也就是普通的awk语句。
对于f2.awk [-v var=value] [var1=value1] [file]来说, [-v var=value]是在BEGIN之前设置的变量值,[var1=value1]是在BEGIN过程之后进行的,也就是说直到首行输入完成后,这个变量才可用,这就想awk脚本黄总传递参数了。
示例:
到此为止算是差不多了,实际上awk的内容好多,这里只是写了所知道的,更详细的可看man awk来获取更加全面的知识。上述若有错误的地方,欢迎提出!谢谢~