awk入门基础命令:
awk [-F '分隔符'] '处理命令' 文件名
eg:
awk -F ' ' '{print $2}' test.txt
意思是,以空格为分隔符,将test.txt中的每行进行分隔,然后输出第2列。$0
则表示所有域,$1
表示第一个域,$n
表示第n个域。
cat /etc/passwd | awk -F ':' 'BEGIN {print "name, shell"} {print $1 ", "$7} END {print "test, end"}'
awk工作流:先执行BEGIN,然后读取文件,按行读取(/n换行分隔符),然后执行对应的动作action,直到所有行读取完毕,最后再执行END操作。
awk正则匹配:
awk -F: '/root/' /etc/passwd
匹配pattern,这里匹配了root才会执行action,这里action为空,默认输出每行的内容
awk内置变量:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
awk -F: '{printf("filename:%12s,linenumber:%3s\n",FILENAME,NR)}' /etc/passwd
awk -F: '{print "filename: "FILENAME, "linenumber: "NR}' /etc/passwd
awk编程:
未完待续。。。
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
https://www.ibm.com/developerworks/cn/education/aix/au-gawk/index.html
https://awk.readthedocs.io/en/latest/chapter-one.html