awk 语法深刻浅出(一)

awk 语法深刻浅出(一)

在详细阐述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

1 从文件输入

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

2 从命令输入

能够将一条或多条Linux命令的输出经过管道发给awk处理。格式以下:

$ command | awk 'pattern'
$ command | awk '{action}'
$ command | awk 'pattern {action}'

范例:当文件employees中的某一行含有模式Sally时,awk打印该行的头第一个字段。

$ cat employees | awk '/Sally/{print $1}'
Sally Chang
相关文章
相关标签/搜索