我有一个文件fruits
:
ap ple
ora nge
pe ar
gra pes
bro ccoli
tom ato
ap ache
我想制作一个 awk 脚本来检查文件中有多少水果。
我努力了
awk -F: '/ap|ora|pe|gra ple|nge|ar|pes/ {sum+=1} END {print sum+0}' fruits
它应该返回 4,因为他们的 4 对完全匹配,但我认为他们返回 5 是因为ap ache
.在这种情况下,空间没有注册吗?
答案1
正则表达式ap|ora|pe|gra ple|nge|ar|pes
匹配
ap
或ora
或pe
或者 gra ple
或者 nge
或ar
或pes
您需要添加一些分组来匹配两个单独的替代项,中间有空格:
$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/' fruits
ap ple
ora nge
pe ar
gra pes
$ awk '/(ap|ora|pe|gra) (ple|nge|ar|pes)/ {sum+=1} END{print sum}' fruits
4
请注意,您不需要设置-F
为非空白值,因为/pattern/
默认情况下匹配整个记录。