• 本页内容

68. 正则表达式运算符


操作符 描述
~ 匹配
!~ 不匹配

当您使用==条件时,awk 会查找完全匹配。 以下示例不打印任何内容,因为items.txt文件中的第二个字段均不与关键字 "Tennis" 完全相等。 主要是与 "Tennis Racket" 不完全相等。

打印第二个字段为 "Tennis" 的行:

awk -F "," '$2 == "Tennis"' items.txt 

当您使用匹配运算符~时,awk 会查找部分匹配,即它查找 “包含” 匹配字符串的字段。 打印第二个字段包含 "Tennis" 的行:

$ awk -F "," '$2 ~ "Tennis"' items.txt
104,Tennis Racket,Sports,190,20

!~运算符与~相反,即 “不包含”。 打印第二个字段不包含 "Tennis" 的行:

$ awk -F "," '$2 !~ "Tennis"' items.txt
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
105,Laser Printer,Office,475,5

下一个示例打印使用 /bin/bash 作为 shell 的用户总数。 在此 awk 脚本中,当一行的最后一个字段包含模式 "/bin/bash"时,awk 变量 n 会递增 1。

$ awk -F ':' '$NF ~ /\/bin\/sh/ { n++ }; END { print n }' /etc/passwd
2