我想使用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
答案 0 :(得分:4)
将模式放在单引号中,并使用-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]
中更简单地编写。这同样适用于正则表达式的其他部分,即OR OR单个字符。
正如评论中所提到的,另一个需要考虑的选项是-i
选项,这意味着完全忽略了字符的大小写。