您好我正在努力确保没有任何文件
<?
(PHP短标签),他们确实有
<?PHP
到目前为止,我必须
grep -r -E '<?*' * | grep -Ev '<?php' >> /phptags.txt
所以这应该在我的根文件夹中给我一个名为phptags.txt的空白文件,如果全部的话
我试过使用转义字符?即。 /?遵循以下URL的建议
https://unix.stackexchange.com/questions/10004/what-does-mean-in-a-regular-expression
之前的经验如何在MacOS10.6上显示grep正则表达式不需要?要转义以搜索它作为文字字符串...但它不起作用!
人们有什么建议吗?提前致谢詹姆斯
答案 0 :(得分:1)
如果没有-E
标记和*
通配符,您的'<?'
模式将匹配并按预期工作,之后您可以管道反转。建议同时添加-i
不区分大小写的标志:
grep -ir '<?' * | grep -iv '<?php' >> /phptags.txt
否则,在您的尝试中,会发生以下情况:<?*
因为扩展正则表达式与第一个<
匹配,?
使其成为可选项,后跟*
这意味着“前面的表达式中的零个或多个”。所以实际上,这匹配任何以<?
开头或不开头的东西,因此匹配所有内容。
如果您切换到基本模式(不是-E
),<?
将按字面匹配。将其转换为反-v
<?php
,也是字面上匹配以删除它们。