# 用法awk 'awk_program' a.txt
语法解析:
- a.txt 是awk要读取的文件,可以是0个文件、一个文件或者多个文件;如果给定0个文件,则标识从标准输入中读取
- 单引号包围的是awk代码,也称为awk程序;尽量使用单引号,因为在awk程序中经常使用$符号,而$符号在shell中是变量符号,如果使用双引号,则$符号会被shell解析为shell变量,然后进行变量替换;使用单引号,会让$符号留给awk去解析
- awk程序中,大量使用大括号,大括号表示代码块,代码块中间可以直接连用,代码块内部的多个语句使用分号";"隔开
# 范例# 输出a.txt中的每一行awk '{print $0}' a.txt# 多个代码块,代码块中多个语句# 输出每行之后还输出两行:hello行和world行awk '{print $0}{print "hello";print "world"}' a.txt
对于awk '{print $0}' a.txt,它类似于shell的while循环while read line;do echo "$line";done
下面再分析该awk命令的执行过程:
读取文件第一行(awk默认按行读取文件)
将所读取的行赋值给awk的变量$0,于是$0中保存的就是本次所读取的行数据
进入代码块{print $0}并执行其中代码print $0,即输出$0,也即输出当前所读取的行
执行完本次代码之后,进入下一轮awk循环:继续读取下一行(第二行)
退出awk