我有一个正在杀了我的Grep
假设我得到了一个带有以下两个条目的文件(file.xml):
现在如果我运行以下grep:
grep -E '(ADF)' file.txt
我得到了以下输出:
pos_ADF_datasource-1450-jdbc.xml
现在我想要排除ADF以获取其他条目,它应该很简单,但我尝试了所有这些并且我无法让它工作:
grep -E '(?<!ADF)' file.txt
我尝试了很多,但我确定有一些事情我没有考虑到这使得我的表达不起作用......
我需要并且想要使用-E,我知道它不能使用扩展的正则表达式!
请让我点亮我!
已解决:
感谢Wiktor的以下考虑:
ERE POSIX不支持外观。即使你使用-P排除&#39; ADF&#39;它只会匹配任何前面没有ADF的位置
如果字符串不包含模式,则无法使用ERE正则表达式进行检查。只有它不相等时才会以模式开始/结束。您只能使用PCRE正则表达式执行此操作。 grep -P&#39; ^(?!。* ADF)&#39; file.txt的
然后我用grep -Pe:
想出来了grep -Pe "^((?!.*ADF).)*-jdbc.xml$" file.xml