我想使用grep和正则表达式来搜索文本文档。
当我输入这个:

grep -o ((D|d)ie|(D|d)as|(D|d)e(r|n|m|s)|(ei|Ei)(n|ne|nen|nem|ner|nes)) [A-ZÄÖÜ][A-Za-zäöü]* document.txt

我明白了:
-bash: syntax error near unexpected token `('

我已经试着把正则表达式用引号括起来了。这样做,我没有错误,但我也没有发现任何东西。谢谢你帮我。
例如,我的文档中有以下句子:
Der Mann und die Frau haben ein Haus.

我想摘录:
Der Mann
die Frau
ein Haus

最佳答案

将模式放在单引号中,并使用-E启用扩展正则表达式支持。

grep -Eo '((D|d)ie|(D|d)as|(D|d)e(r|n|m|s)|(ei|Ei)(n|ne|nen|nem|ner|nes)) [A-ZÄÖÜ][A-Za-zäöü]*' document.txt

请记住(D|d)可以更简单地用括号表达式[Dd]编写。同样的情况也适用于正则表达式的其他部分,其中包含单个字符。
如注释中所述,要考虑的另一个选项是-i选项,这意味着完全忽略字符的大小写。

关于bash - bash中意外 token '('附近的语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43935786/

10-09 06:05