模式和动作介绍
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