我的虚拟文件如下所示:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
如果$ 3中有字符snow
,我想获取行。我可以这样做:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
但应该有更简单的方法。
答案 0 :(得分:116)
awk '$3 ~ /snow/ { print }' dummy_file
答案 1 :(得分:31)
也可以通过查找带有index()函数的子串:
awk '(index($3, "snow") != 0) {print}' dummy_file
更短的版本:
awk 'index($3, "snow")' dummy_file
答案 2 :(得分:7)
答案 3 :(得分:5)
打印第三个字段仅为snow
或snowman
的行:
awk '$3~/^snow(man)?$/' file
答案 4 :(得分:3)
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file
输入:
C1 C2 C3 1 a snow 2 b snowman snow c sowman snow snow snowmanx
..输出:
1 a snow 2 b snowman