awk部分string匹配(如果列/字部分匹配)

我的虚拟文件看起来像这样:

C1 C2 C3 1 a snow 2 b snowman snow c sowman 

如果有$ 3的stringsnow ,我想得到线路。 我可以这样做:

 awk '($3=="snow" || $3=="snowman") {print}' dummy_file 

但应该有更简单的方法。

 awk '$3 ~ /snow/ { print }' dummy_file 

也可以通过使用index()函数查找子string:

 awk '(index($3, "snow") != 0) {print}' dummy_file 

也许这会有所帮助

http://www.math.utah.edu/docs/info/gawk_5.html

 awk '$3 ~ /snow|snowman/' dummy_file 

只打印第三个字段为snowsnowman

 awk '$3~/^snow(man)?$/' file 

GNU sed

 sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file 

input:

 C1 C2 C3    
 1雪   
 2 B雪人 
雪c索曼
      雪雪人

..output:

 1雪
 2 B雪人