bash 中意外标记“(”附近的语法错误
syntax error near unexpected token `(' in bash
我想使用 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]
中。这同样适用于正则表达式的其他部分,您在其中对单个字符进行 OR-ing。
如评论中所述,另一个要考虑的选项是 -i
选项,这意味着完全忽略字符的大小写。
我想使用 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]
中。这同样适用于正则表达式的其他部分,您在其中对单个字符进行 OR-ing。
如评论中所述,另一个要考虑的选项是 -i
选项,这意味着完全忽略字符的大小写。