0

我有一种预感,我可能应该使用 ack 或 egrep 来代替,但是我应该使用什么来基本上寻找

<?

在文件的开头?我正在尝试查找所有包含 php short open 标记的文件,因为我将一堆旧脚本迁移到具有最新 php 5 的相对较新的服务器上。

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


如何实现类似 bash 的制表符补全?

我试图确定系统如何将字符打印到标准输入——也就是说,它如何打印用户可以删除的字符,以及如果用户点击“Enter”,哪些字符被视为输入。

我碰巧在使用 C,但如果解决方案依赖于语言,我会感到非常惊讶。

感谢您的任何见解!: D

4

6 回答 6

6

我使用 RTFM 并最终使用:

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

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

于 2009-10-07T17:53:26.167 回答
4

如果您正在寻找所有 php 短标签,请使用负前瞻

/<\?(?!php)/

会匹配<?但不会匹配<?php

[meder ~/project]$ grep -rP '<\?(?!php)' .
于 2009-10-07T17:52:54.483 回答
2
find . -name "*.php" | xargs  grep -nHo "<?[^p^x]"

^x 排除 xml 开始标记

于 2013-03-13T13:45:17.663 回答
1

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

于 2009-10-07T17:48:52.947 回答
0
grep '^<?$' filename

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

grep ' ^ < ? $ ' 文件名

于 2009-10-07T17:53:18.753 回答
0

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

对于前者:

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

对于后者:

grep '^<?$' [files]

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

于 2009-10-07T17:57:33.333 回答