linux - Grep: Unknown syntax for entry(在两台不同的机器上:一台机器的结果很好,另一台是错误的)

标签 linux ubuntu grep syntax-error

我只有在 grep 中有问题。

从这个输入:

(pinkpink)(orangered)(bluegreen)(<( )>)(<( )>)(purplegreen)(pinkblue)(pinkred)::George->Phil-> (purplegreen)(pinkpink)(orangepurple)(redpurple)(redorange)(bluepurple)(<( )>)(purpleorange)(greenorange)(redpurple) (greenpink)(orangeorange)(greenred)(redpink)(orangepink)(greenred)(<( )>)(blueorange)(orangepink)(pinkred) (orangered)(bluegreen)(purplegreen)(bluered)(bluegreen)(orangeorange)(<( )>)(<( )>)(pinkred)(greengreen)(redblue)::George->Tom->(<( )>)(<( )>)(pinkblue)(purplered)(purplered)(redblue)(redgreen)(orangegreen) (redred)(purplepink)(pinkred)(<( )>)(pinkred)(redorange)(pinkgreen)(<( )>)(<( )>)::Phil->Edna->(<(

我必须输出:

::George->Phil->

::George->Tom->

::Phil->Edna->

我的命令是:

grep -o -i '::\+[Harry|Edna|Phil|George|Tom]\+->\+[harry|edna|phil|george|tom]\+->'
FILE

如您在屏幕截图中所见,它在我的机器上成功生成了输出。我正在使用 Ubuntu 13.10。

Success output

但是,我的讲师说该命令在他的机器中是“Unknown syntax for entry.”。我哪里做错了?如何检查我的 grep 命令在其他机器上是否不是“未知条目语法”以进行交叉检查?如果不同的机器可以产生不同的结果,我如何以及在哪里可以为各种 linux 和不同的硬件尽可能产生可靠的结果?

非常感谢。

最佳答案

您使用的字符类别不正确。正则表达式 [a|bc] 匹配一个字符,它是列出的四个字符之一:a|bc。您显然想要 (a|bc) 匹配文字字符串 a 或文字字符串 bc,但您需要 grep - E(又名 egrep)。

此外,::+ 匹配两个或多个冒号,(a|bc)+ 匹配一个或多个 abc,例如 aaaaabcabcbcbcaa

关于linux - Grep: Unknown syntax for entry(在两台不同的机器上:一台机器的结果很好,另一台是错误的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936246/

相关文章:

c++ - 该参数的正确类型是什么?

linux - docker-compose 没有部署到远程机器

grep - 限制 grep 命令仅打印一次文件名

Java Grep 库

linux - 如何找出交换了哪些 NL 消息

linux - Bash shell 问题 : Error occurs when running a simple shell script

MySQL ODBC - 如何通过 SSH 将 Access 2016 连接到远程服务器

ruby-on-rails - 使用 Capistrano 部署 Rails 5.1/Webpacker 应用程序

shell - 执行 shell 脚本时未找到 fc

linux - 如何从 `ip route` 命令的输出中选择 IP 地址?