Shell脚本学习指南之查找与替换介绍

2019-09-23 09:48:40于丽

rm quotas.sorted sales.sorted

3.3.4 使用awk重新编排字段

awk程序基本架构:pattern { action }
pattern通常是由斜杠括起来的ERE,action通常是一个明了的print语句。
省略pattern则会对每一条输入记录执行action,省略action则等同于{ print }。

awk自动将各个记录分为字段,并将每条记录内字段数目存储到内建变量NF。
默认以空白分隔,还可以将FS变量设置为一个不同的值。$加数字表示字段值。
awk '{ print $1 }'               打印第1个字段
awk '{ print $2, $5 }'          打印第2与第5个字段
awk '{ print $1, $NF }'        打印第一个与最后一个字段
awk 'NF > 0 { print $0 }'     打印非空行
awk 'NF > 0'                     同上

awk -F : '{ print $1, $5 }' /etc/passwd     设置字段分隔字符,-F选项自动设置FS变量。
root root
...
tolstoy Leo Tolstoy

记得在print的参数间用逗号隔开,否则awk将连接相邻的所有值。
awk -F: '{ print "User" $1 "is really" $5 }' /etc/passwd
Userrootis reallyroot
...
Usertolstoyis reallyLeo Tolstoy