在 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 的任意组合组成的字符串。