我需要在文件的第三列上搜索多个模式,然后打印整行。
我在下面使用这个,但是如何让它打印匹配的整行?
awk '{print $3}' file | egrep -w "S|M|D"
答案1
我认为你的要求只是需要awk
而不是与grep
.如果您想打印第三列与这些字母中的任何一个匹配的整行,您需要这样做
awk '$3 ~ /^(S|M|D)$/' file
答案2
要提取第三个空格分隔字段恰好为S
,M
或 的行D
,请使用以下之一
awk '$3 ~ /^[SMD]$/' file
或者,使用字符串匹配而不是正则表达式匹配,
awk '$3 == "S" || $3 == "M" || $3 == "D"' file
没有相应块的条件将表现为其块只是{ print }
。
答案3
awk '$3 ~ /^S/||/^M/||/^D/{print $0}' filename