也许我错过了一些非常简单的东西,但我似乎无法从命令行(在 bash 中)使用 grep ,其中搜索参数包含竖线|
。
例如,
grep a|b
导致错误bash: b: command not find。当然。
逃离管道
grep a\|b
消除了错误,但导致 grep 本身将管道解释为文字搜索字符(即,它搜索a|b
输入中的文本而不是“a 或 b”)。
grep "a|b"
具有相同的结果:它也搜索文字 text a|b
。
所以现在怎么办?我还尝试过使用'
和 ` 作为分隔符,现在我没有什么可想的了。
接受建议!
(如果重要的话,这是针对 Debian 12、KDE 和 konsole 的终端。)
它对 grep 解释管道没有影响(您使用的引用类型对 grep 是不可见的;它只接收字符串
a|b
) - grep总是将管道解释为文字字符。Grep 使用 POSIX“基本”正则表达式,它根本没有此功能(尽管某些实现使用 来添加它
\|
)。使用
grep -E
或egrep
激活“POSIX 扩展”正则表达式语言,其中|
实际含义与您期望的含义相同,或者grep -P
激活对 PCRE(类似 Perl)正则表达式的支持。