对awk命令而言,正则表达式是置于两个正斜杠之间、由字符组成的模式。awk支持使用(与egrep相同的)正则表达式元字符对正则表达式进行某种方式的修改。如果输入行中的某个字符串与正则表达式相匹配,则最终条件为真,于是执行与该表达式关联的所有操作。如果没有指定操作,则打印与正则表达式匹配的记录。
范例
$
cat employees
Tom Jones 4424 5 / 12 / 66 543354
Mary Adams 5346 11 / 4 / 63 28765
Sally Chang 1654 7 / 22 / 54 650000
Billy Black 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 Black 1683 9 / 23 / 44 336500
$ awk
'/Mary/' employees
Mary Adams 5346 11 / 4 / 63 28765
Mary Adams 5346 11 / 4 / 63 28765
说明:显示文件employees中所有包含正则表达式Mary的行。
范例
$ awk
'/Mary/{print $1,$2}' employees
Mary Adams
Mary Adams
说明:显示文件employees中所有包含正则表达式Mary的行的头两个字段。
awk正则表达式元字符
元字符 | 说明 |
---|---|
^ | 匹配串首 |
$ | 匹配串尾 |
. | 匹配单个任意字符 |
* | 匹配零个或多个前导字符 |
+ | 匹配一个或多个前导字符 |
? | 匹配零个或一个前导字符 |
[ABC] | 匹配指定字符组(即A、B和C)中任一字符 |
[^ABC] | 匹配任何一个不在指定字符组(即A、B和C)中的字符 |
[A-Z] | 匹配A至Z之间的任一字符 |
A|B | 匹配A或B |
(AB)+ | 匹配一个或多个AB 的组合,例如: AB 、ABAB 、ABABAB |
\* | 匹配星号本身 |
& | 用在替代串中,代表查找串中匹配到的内容 |
以下是grep与sed支持,而awk不支持的元字符。
awk不支持的元字符
元字符 | 说明 |
---|---|
\< \> | 单词定位 |
\( \) | 向前引用 |
\{ \} | 重复 |