bash - bash 中意外标记 `(' 附近的语法错误

标签 bash shell unix grep regular-language

我想使用 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 选项,这意味着完全忽略字符的大小写。

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

相关文章:

linux - 添加 .env 变量以运行给定命令

ios - 如何在越狱的 iPhone 中使用命令 shell 卸载 iOS 应用程序

macos - 如何ping文件中的每个IP?

c - 在 tcsh shell 下,如何将脚本的输出发送到 shell 和 gdb 上的程序?

c - 如何在linux中通过C程序打开新终端

linux - SCP 在两个远程服务器之间传输文件而不提示输入密码

bash - 在不退出 shell 的情况下使用 set -e 运行 bash 函数

linux - 为什么这个脚本运行不正常?

bash - shopt 在 shell 函数中不起作用

python - 使用 xvkbd 读取条形码。如何禁用Enter键?