不正确的eGrep命令



问题是:我有一个名为brain.txt的文档,带有(brainfuck)代码的行:

++++++++++[>++++++++>++++++>+<<<-]>+++.>+++++.<-.+.>>. word

最后,word确实可以是任何单词。我如何从文档中过滤线的每一个序列的长度&lt的长度;>不平坦?

我写了以下命令:

egrep -v '^(([^<]*(<<)*[^<]*)|([^>]*(>>)*[^>]*))*$' brain.txt

但似乎不起作用,有人可以向我解释一下此命令是什么不正确的?

编辑:如卡罗利·霍瓦斯(Karoly Horvath)所提到的那样,我没有否定偶数偶尔,而是使用正则表达式与不均匀的情况匹配。所以我写了以下命令:

egrep '^(([^<]*<(<<)*[^<]*)|([^>]*>(>>)*[^>]*))*$' brain.txt

,但由于某种原因,我仍然符合线。

您的正则表达式匹配的每一行,其中每个的序列&lt的序列;和>是偶数

如果否定了它,则将打印其余的行 - 包含至少一个不均匀的序列。

另一个问题是[^<]可以吃>

不要否定,只需搜索不平衡:

grep -P '^(([^<>]*)|((<<)*<(?!<))|((>>)*>(?!>)))*$'

相关内容

  • 没有找到相关文章

最新更新