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