1、工作原理 例子: cat /etc/passwd |awk -F ‘:’ ‘BEGIN {print “name”} {print $1} END {print “Joyous”}’ 说明: awk是先执行BEGIN,然后去读文件,一行一行读取,-F指定了每行按照:分割,其中$0标示当前行,$1标示分割第一个区域,$n标示第n个区域。一直到读取完毕,最后执行END 2、正则匹配 awk -F: ‘/^root/{print $1}’ /etc/passwd 说明:搜索root开头的行打印第一个区域 3、内置变量 ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域的个数 NR 已读的记录数 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 示例: awk -F’:’ ‘{print “filename:” FILENAME “,line:” NR “,cols:” NF}’ /etc/passwd 4、printf格式化输出 awk -F ‘:’ ‘{printf(“filename:%s,linenumber:%s,columns:%s,linecontent:%s\n”,FILENAME,NR,NF,$0)}’ /etc/passwd 5、编程 定义变量可以在action块定义,语句使用;分开 awk ‘BEGIN {count=0;} {count++; print $0;} END{print “user count is “, count}’ /etc/passwd 条件语句if(){}else{} 6、函数 length(string)返回字符串的长度 index(string,find)返回子字符串在父字符串位置 tolower(string)将所有字符都转成小写 toupper(string)将所有字符都转成大写 substr(string,strat,length)截取字符串 match(string,ereg)支持正则匹配 sub(reg,rep,string)替换匹配的第一个字符序列 gsub(reg,rep,string)替换匹配的全部字符序列 split(string,arr,char)分割字符
参考: http://www.gnu.org/software/gawk/manual/gawk.html