在详细阐述awk命令以前,咱们首先了解一下awk是如何完成本身的任务的,咱们将以一个名为names(仅有三行记录)的文件为例进行说明。正则表达式
张三 Savage 100 李二 Lee 200 王五 Doe 300
使用下面的awk命令:awk打印字段时,将如下面方式使用print函数函数
$ awk '{print $1,$3}' names
1 .awk使用一行做为输入(经过文件或者管道),并将这一行赋给内部变量$0 ,默认时每一行也能够称为一个记录,以换行符结束。code
张三 100 李二 200 王五 300
awk 指令由模式、操做、或模式与操做的组合组成。io
模式是由某种类型的表达式组成的语句。若是某个表达式中没有出现关键字if,但实际计算时却暗含if这个词,那么,这个表达式就是模式。操做由括在大括号内的一条或多条语句组成,语句之间用分号或换行符隔开,模式则不能被括在大括号中,模式由括在两个正斜杠之间的正则表达式、一个或多个awk 操做符组成的表达式组成。awk
awk的格式以下($是Linux命令的提示符):变量
$ awk 'pattern' filename $ awk '{action}' fi1ename $ awk 'pattern {action}' fi1ename
下面演示一个名为employees的文件。file
$ 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
awk 打印出全部包含模式Mary的行。语法
$ awk '/Mary/' employees Mary Adams 5346 11/4/63 28765
awk打印出文件employees的第一个字段,字段从行的左端开始,以空白符分隔。command
$ awk '{print $1}' employees Tom Mary Sally Billy
awk打印出文件employees的第一个字段,字段从行的左端开始,以空白符分隔。文件
$ awk '/Sally/{print $1,$2}' employees Sally Chang
能够将一条或多条Linux命令的输出经过管道发给awk处理。格式以下:
$ command | awk 'pattern' $ command | awk '{action}' $ command | awk 'pattern {action}'
范例:当文件employees中的某一行含有模式Sally时,awk打印该行的头第一个字段。
$ cat employees | awk '/Sally/{print $1}' Sally Chang