grep - 搜索“
发布于 2024-08-06 11:44:02 字数 209 浏览 11 评论 0 原文

查找

<?

我有一种预感,我可能应该使用 ack 或 egrep 来代替,但是我应该使用什么来基本上在文件的开头 ?我正在尝试查找包含 php 短开放标记的所有文件,因为我将一堆遗留脚本迁移到具有最新 php 5 的相对较新的服务器。

我知道正则表达式可能是 '/^<\ ?\n/'

I have a hunch that I should probably be using ack or egrep instead, but what should I use to basically look for

<?

at the start of a file? I'm trying to find all files that contain the php short open tag since I migrated a bunch of legacy scripts to a relatively new server with the latest php 5.

I know the regex would probably be '/^<\?\n/'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

瑾夏年华 2024-08-13 11:44:03

我 RTFM 并最终使用:

grep -RlIP '^<\?\n' *

P 参数启用了完全 perl 兼容的正则表达式。

I RTFM and ended up using:

grep -RlIP '^<\?\n' *

the P argument enabled full perl compatible regexes.

念三年u 2024-08-13 11:44:03

如果您正在查找所有 php 短标记,请使用 否定前瞻

/<\?(?!php)/

将匹配 < code> 但不会匹配

[meder ~/project]$ grep -rP '<\?(?!php)' .

If you're looking for all php short tags, use a negative lookahead

/<\?(?!php)/

will match <? but will not match <?php

[meder ~/project]$ grep -rP '<\?(?!php)' .
在梵高的星空下 2024-08-13 11:44:03
find . -name "*.php" | xargs  grep -nHo "<?[^p^x]"

^x 排除 xml 开始标记

find . -name "*.php" | xargs  grep -nHo "<?[^p^x]"

^x to exclude xml start tag

芸娘子的小脾气 2024-08-13 11:44:03

如果您担心 Windows 行结尾,只需添加 \r?

if you worried about windows line endings, just add \r?.

他夏了夏天 2024-08-13 11:44:03
grep '^<?

不知道是否正确显示。应该是

grep ' ^ < ? $ ' 文件名

filename

不知道是否正确显示。应该是

grep ' ^ < ? $ ' 文件名

grep '^<?

Don't know if that is showing up correctly. Should be

grep ' ^ < ? $ ' filename

filename

Don't know if that is showing up correctly. Should be

grep ' ^ < ? $ ' filename

葬心 2024-08-13 11:44:03

您的意思是字面意思“反斜杠n”还是换行符?

对于前者:

grep '^<?\\n' [files]

对于后者:

grep '^<?

请注意,grep 将搜索所有行,因此如果您想在文件开头查找匹配项,则需要将每个文件过滤到其第一行,或者要求 grep打印出行号,然后仅查找第 1 行匹配项。

[files]

请注意,grep 将搜索所有行,因此如果您想在文件开头查找匹配项,则需要将每个文件过滤到其第一行,或者要求 grep打印出行号,然后仅查找第 1 行匹配项。

Do you mean a literal "backslash n" or do you mean a newline?

For the former:

grep '^<?\\n' [files]

For the latter:

grep '^<?

Note that grep will search all lines, so if you want to find matches just at the beginning of the file, you'll need to either filter each file down to its first line, or ask grep to print out line numbers and then only look for line-1 matches.

[files]

Note that grep will search all lines, so if you want to find matches just at the beginning of the file, you'll need to either filter each file down to its first line, or ask grep to print out line numbers and then only look for line-1 matches.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文