在 Linux 中按 OR 条件过滤输出

在 Linux 中按 OR 条件过滤输出

在 Linux 中是否有某种方法可以通过 OR 条件过滤命令输出?
可以使用 grep 通过 AND 条件进行过滤,方法如下:

ls -l | grep "^a" | grep "z$"

意思是:列出所有以“a”开头且以“z”结尾的文件(因此有更短的写法:grep“^a\.*z$”,但这无关紧要)。
有没有办法通过 OR 条件执行测试?
例如:以“xen”开头的文件或以“.rpm”结尾的文件。但确切地说,不是像这样:

grep "[xen]{0,3}\.*[.rpm]{0,4}"

谢谢你的到来。

答案1

GNU在正则表达式中grep接受\|OR 运算符,因此您可以使用

grep '^xen\|\.rpm$'

答案2

您可以使用egrep(的别名grep -E)在搜索模式中使用扩展正则表达式,如下所示:

egrep '^xen|\.rpm$'

注意[xen]{0,3}意思是:寻找一个长度在 0 到 3 之间,由字符 x、e 和 n 的任意组合组成的字符串。

相关内容