我想使用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/