grep - 搜索“\n”在文件开头
查找
<?
我有一种预感,我可能应该使用 ack 或 egrep 来代替,但是我应该使用什么来基本上在文件的开头 ?我正在尝试查找包含 php 短开放标记的所有文件,因为我将一堆遗留脚本迁移到具有最新 php 5 的相对较新的服务器。
我知道正则表达式可能是 '/^<\ ?\n/'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我 RTFM 并最终使用:
P 参数启用了完全 perl 兼容的正则表达式。
I RTFM and ended up using:
the P argument enabled full perl compatible regexes.
如果您正在查找所有 php 短标记,请使用 否定前瞻
将匹配 < code> 但不会匹配
If you're looking for all php short tags, use a negative lookahead
will match
<?
but will not match<?php
^x 排除 xml 开始标记
^x to exclude xml start tag
如果您担心 Windows 行结尾,只需添加
\r?
。if you worried about windows line endings, just add
\r?
.不知道是否正确显示。应该是
grep ' ^ < ? $ ' 文件名
Don't know if that is showing up correctly. Should be
grep ' ^ < ? $ ' filename
您的意思是字面意思“反斜杠n”还是换行符?
对于前者:
对于后者:
请注意,grep 将搜索所有行,因此如果您想在文件开头查找匹配项,则需要将每个文件过滤到其第一行,或者要求 grep打印出行号,然后仅查找第 1 行匹配项。
Do you mean a literal "backslash n" or do you mean a newline?
For the former:
For the latter:
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.