我有我或许应该使用ACK或egrep的,而不是一种预感,但我应该怎么用,基本找grep的 - 搜索“?< n”在文件开始
<?
在文件的开始?我试图查找包含PHP短开放标记的所有文件,因为我迁移一堆传统脚本的使用最新的PHP 5
我知道一个相对较新的服务器的正则表达式很可能会'/^<\?\n/'
我有我或许应该使用ACK或egrep的,而不是一种预感,但我应该怎么用,基本找grep的 - 搜索“?< n”在文件开始
<?
在文件的开始?我试图查找包含PHP短开放标记的所有文件,因为我迁移一堆传统脚本的使用最新的PHP 5
我知道一个相对较新的服务器的正则表达式很可能会'/^<\?\n/'
我RTFM和最终使用:
grep -RlIP '^<\?\n' *
在P参数启用全Perl兼容的正则表达式。
将此问题标记为已回答,以便我们可以继续使用我们的生活;) – 2009-10-07 18:01:05
“您可以在两天内接受您自己的答案。” :( – 2009-10-07 18:07:28
但与此同时,你可以得到一个真正的RTFM自学者徽章。* clicks + 1 * :-P – Tomalak 2009-10-07 18:28:53
如果你担心窗口行结束,只需添加\r?
。
如果你正在寻找所有的PHP短标记,使用negative lookahead
/<\?(?!php)/
将匹配<?
但不会匹配<?php
[meder ~/project]$ grep -rP '<\?(?!php)' .
+1用于考虑负向预测并指定-P。 – 2009-10-07 20:12:43
grep '^<?$' filename
不知道这是否是正确显示。应该是
grep'^ <? $“文件名
你的意思是字面上的“反斜杠n”还是你的意思是换行符?
对于前者:
grep '^<?\\n' [files]
对于后者:
grep '^<?$' [files]
注意的grep将搜索所有行,所以如果你想只是在文件的开始找到比赛,你将需要将每个文件过滤到第一行,或者要求grep打印出行号,然后只查找第1行匹配项。
find . -name "*.php" | xargs grep -nHo "<?[^p^x]"
^X排除XML开始标记
很好地工作,并且不需要grep用Perl regex支持重新编译 – udog 2013-07-19 14:43:45
我想你已经回答了你自己的问题 – 2009-10-07 17:47:35
这样吗?它不起作用? – SilentGhost 2009-10-07 17:47:41
你只是想找到所有的PHP短标签? – 2009-10-07 17:49:03