模式和动作介绍

awk 由模式和动作组成,用花括号括起来,如果模式匹配则采用。最基本的模式是空模式,它匹配任何记录。最基本的动作是空动作,相当于 { print },而 { print } 相当于 { print $0 }。如果模式和动作都是空的,那么 awk 将什么都不做。

以下程序将简单地回显其输入,例如:

awk '{ print }' /etc/passwd

由于 { print } 是默认操作,并且由于真值与任何记录匹配,因此该程序可以重写为:

awk '1' /etc/passwd

最常见的模式类型可能是用斜杠括起来的正则表达式。以下程序将打印包含至少两个后续出现的字母 o 的所有记录,例如:

awk '/oo+/ { print }' /etc/passwd

但是,你可以使用任意表达式作为模式。以下程序打印组 0(字段 4)中用户的名称(字段 1),例如:

awk -F: '$4 == 0 { print $1 }' /etc/passwd

你也可以匹配正则表达式,而不是完全匹配。以下程序打印组中所有用户的名称,其组 ID 中至少有一个零:

awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd