awk 指令由模式、操作、或模式与操作的组合组成。模式是由某种类型的表达式组成的语句。如果某个表达式中没有出现关键字if,但实际计算时却暗含if这个词,那么,这个表达式就是模式。操作由括在大括号内的一条或多条语句组成,语句之间用分号或换行符隔开,模式则不能被括在大括号中,模式由括在两个正斜杠之间的正则表达式、一个或多个awk 操作符组成的表达式组成。
awk 命令可以在命令行输入,也可以写在awk 脚本文件里。要处理的文本行则来自文件、管道或标准输入。
2.1 从文件输入
awk的格式如下($是Linux命令的提示符):
$awk
'pattern' filename
$awk '{action}' fi1ename
$awk 'pattern {action}' fi1ename
$awk '{action}' fi1ename
$awk 'pattern {action}' fi1ename
下面演示一个名为employees的文件。
$cat employees
Tom Jones 4424 5 / 12 / 66 543354
Mary Adams 5346 11 / 4 / 63 28765
Sally Chang 1654 7 / 22 / 54 650000
Billy B1ack 1683 9 / 23 / 44 336500
Tom Jones 4424 5 / 12 / 66 543354
Mary Adams 5346 11 / 4 / 63 28765
Sally Chang 1654 7 / 22 / 54 650000
Billy B1ack 1683 9 / 23 / 44 336500
$awk
'/Mary/' employees
Mary Adams 5346 11 / 4 / 63 28765
Mary Adams 5346 11 / 4 / 63 28765
说明:awk 打印出所有包含模式Mary的行。
2.2 从命令输入
可以将一条或多条Linux命令的输出通过管道发给awk处理。格式如下:
$command
| awk
'pattern'
$command | awk '{action}'
$command | awk 'pattern {action}'
$command | awk '{action}'
$command | awk 'pattern {action}'
范例
$cat employees
| awk
'/Sally/{print $1}'
Sally Chang
Sally Chang
说明:当文件employees中的某一行含有模式Sally时,awk打印该行的头第一个字段。