複数行のテキストを再帰的に検索して置き換える方法(削除)

複数行のテキストを再帰的に検索して置き換える方法(削除)

ディレクトリを再帰的に参照して、すべてのファイルから特定のコンテンツを検索したいと思います。このコンテンツが見つかったら、交換する必要があります。 1行で次のようにできます。

find . -type f -exec sed -i -e 's@code2replace@@g' {} \;

動作する場合もあり、動作しない場合もあります(ハードドライブスペース不足...)。これで、複数の交換操作を実行できる作業が必要です。元のファイルを上書きする必要があり、複数行モードが大幅に長くなる可能性があります。だから、外部ファイルに保存する方が簡単だと思いました。

置き換えるコードは次のとおりです。

#c3284d#
echo(gzinflate(base64_decode("sylOLsos....")));
#/c3284d#

また、どのキャラクターを脱出すべきですか?

ベストアンサー1

Sedは、複数行のサポートを含む、単純な検索と置換を超える操作を実行できます。

以下は、誰かが何をしたのかについてのブログ投稿です(彼はsedml「sed multiline」のスクリプトを書いています:http://austinmatzko.com/2008/04/26/sed-multi-line-search-and-replace/

基本的な考え方は、ファイル全体をsedの「保存バッファ」にコピーし、正規表現を実行してから変更されたファイルを作成することです。ただし、ファイルが大きい場合、ファイル全体が一度にメモリにロードされるため、このアプローチはかなり遅くなります。

おすすめ記事