0

おそらく代わりにackまたはegrepを使用する必要があるという予感がありますが、基本的に何を使用して検索する必要がありますか

<?

ファイルの先頭に?一連のレガシースクリプトを最新のphp5を備えた比較的新しいサーバーに移行したため、phpの短いオープンタグを含むすべてのファイルを見つけようとしています。

正規表現はおそらく'/^<\?\n/'


Windowsの行末が気になる場合は、を追加して\r?ください。

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 に答える