awk是一个文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
主要选项:
-F 指定分割符
-v 赋值一个用户定义变量
awk [选项] '正则表达式1{action} 正则表达式2{action2}' filename
案例

$cp /etc/passwd ./
#1.搜索passwd文件以root关键字开头的所有行,并输出该行第7列。
$ awk -F : '/^root/{print $7}' passwd
#2.搜索passwd文件以root关键字开头的所有行,并输出该行第1列和第7列,中间","分割。
$ awk -F : '/^root/{print $1 "," $7}' passwd
#3.只显示/etc/passwd的第一列和第7列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"ha,/cool/girl"
$awk -F : 'BEGIN{print "user,shell"} {print $1","$7}END{print "ha,/cool/girl"}' passwd
#4.将passwd中用户id(即第3列)增加数值1并输出
$awk -F : -v i=1 '{print $3+i}' passwd
#4.内置变量NF多少列,NR已读的记录数即行数
$awk -F : '{print FILENAME"," NR"," NF}' passwd
#5.查询sed.txt中空格所在的行号
$awk '/^$/{print NR}' sed.txt