おそらく代わりにackまたはegrepを使用する必要があるという予感がありますが、基本的に何を使用して検索する必要がありますか
<?
ファイルの先頭に?一連のレガシースクリプトを最新のphp5を備えた比較的新しいサーバーに移行したため、phpの短いオープンタグを含むすべてのファイルを見つけようとしています。
正規表現はおそらく'/^<\?\n/'
おそらく代わりにackまたはegrepを使用する必要があるという予感がありますが、基本的に何を使用して検索する必要がありますか
<?
ファイルの先頭に?一連のレガシースクリプトを最新のphp5を備えた比較的新しいサーバーに移行したため、phpの短いオープンタグを含むすべてのファイルを見つけようとしています。
私はRTFMを使用し、最終的に次を使用しました。
grep -RlIP '^<\?\n' *
P引数により、Perl互換の完全な正規表現が有効になりました。
すべてのphpショートタグを探している場合は、ネガティブルックアヘッドを使用してください
/<\?(?!php)/
一致しますが一致<?
しません<?php
[meder ~/project]$ grep -rP '<\?(?!php)' .
find . -name "*.php" | xargs grep -nHo "<?[^p^x]"
^xはxml開始タグを除外します
Windowsの行末が気になる場合は、を追加して\r?
ください。
grep '^<?$' filename
それが正しく表示されているかどうかわからない。する必要があります
grep'^ <?$'ファイル名
文字通りの「バックスラッシュn」を意味しますか、それとも改行を意味しますか?
前者の場合:
grep '^<?\\n' [files]
後者の場合:
grep '^<?$' [files]
grepはすべての行を検索するため、ファイルの先頭で一致するものを検索する場合は、各ファイルを最初の行までフィルタリングするか、grepに行番号を出力してから検索するように依頼する必要があります。行1の一致の場合。