我只有在 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。
但是,我的讲师说该命令在他的机器中是“Unknown syntax for entry.”。我哪里做错了?如何检查我的 grep 命令在其他机器上是否不是“未知条目语法”以进行交叉检查?如果不同的机器可以产生不同的结果,我如何以及在哪里可以为各种 linux 和不同的硬件尽可能产生可靠的结果?
非常感谢。
最佳答案
您使用的字符类别不正确。正则表达式 [a|bc]
匹配一个字符,它是列出的四个字符之一:a
、|
、b
或 c
。您显然想要 (a|bc)
匹配文字字符串 a
或文字字符串 bc
,但您需要 grep - E
(又名 egrep
)。
此外,::+
匹配两个或多个冒号,(a|bc)+
匹配一个或多个 a
或 bc
,例如 aaaa
或 abcabcbcbcaa
。
关于linux - Grep: Unknown syntax for entry(在两台不同的机器上:一台机器的结果很好,另一台是错误的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936246/