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

ric*_*ick 21 bash awk sed

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

Sie*_*geX 27

POSIX的方式

awk '/pattern1/ || /pattern2/{print}'
Run Code Online (Sandbox Code Playgroud)

编辑

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


Mat*_*hen 23

使用:

sed -nr '/patt1|patt2/p'
Run Code Online (Sandbox Code Playgroud)

模式在哪里patt1和哪个patt2.如果您希望它们与整行匹配,请使用:

sed -nr '/^(patt1|patt2)$/p'
Run Code Online (Sandbox Code Playgroud)

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

sed -n '/^\(patt1\|patt2\)$/p'
Run Code Online (Sandbox Code Playgroud)

符合POSIX标准.


lhf*_*lhf 6

awk '/PATT1|PATT2/ { print }'


Vij*_*jay 6

你为什么不想用grep?

grep -e 'pattern1' -e 'pattern2'
Run Code Online (Sandbox Code Playgroud)