awk

Regular Expression Operators

Operator Description
~ Match operator
!~ no Match operator

当你使用==条件,awk视为全部匹配。下面的例子不打印任何信息,在items.txt文件执行匹配关键字Tennis. Tennis Racket 不是完全匹配。

打印字段2是Tennis的行:

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

当你使用匹配操作符~,awk视为一个局部匹配,例如 它视一个字段包含匹配字符串。

打印字段2包含Tennis的行:

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

!~操作符~取反,例如 不包含

打印字段2不包含 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脚本里,当一行的最后字段包含pattern /bin/bash时,awk变量n加1

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