在 awk 和 grep 之后打印整行

在 awk 和 grep 之后打印整行

我需要在文件的第三列上搜索多个模式,然后打印整行。

我在下面使用这个,但是如何让它打印匹配的整行?

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

相关内容