使用sed / awk打印具有匹配模式或其他匹配模式的行

时间:2011-03-22 00:10:50

标签: bash sed awk

我需要使用在匹配模式 OR 的文件中打印不同模式的行。我觉得这是一件容易的事,但我似乎无法找到答案。有什么想法吗?

4 个答案:

答案 0 :(得分:27)

POSIX方式

awk '/pattern1/ || /pattern2/{print}'

修改

公平地说,我通过/pattern1|pattern2/更喜欢 lhf 更好的方式,因为它需要较少的输入以获得相同的结果。但是,我应该指出,此模板不能用于逻辑AND 操作,因为您需要使用我的模板/pattern1/ && /pattern2/

答案 1 :(得分:22)

使用:

sed -nr '/patt1|patt2/p'

其中patt1patt2是模式。如果您希望它们与整行匹配,请使用:

sed -nr '/^(patt1|patt2)$/p'

您可以删除-r并添加转义符:

sed -n '/^\(patt1\|patt2\)$/p'

符合POSIX标准。

答案 2 :(得分:6)

awk '/PATT1|PATT2/ { print }'

答案 3 :(得分:6)

为什么你不想使用grep?

grep -e 'pattern1' -e 'pattern2'