perl -0777 -i.withdiv -pe 's{<div[^>]+?id="user-info"[^>]*>.*?</div>}{}gsmi;' test.html
-0777
何もない上で分割することを意味するため、ファイル全体を丸呑みします (行ごとではなく、-p のデフォルト
-i.withdiv
ファイルをその場で変更し、拡張子 .withdiv を付けてオリジナルを残すことを意味します (-p のデフォルトは単に印刷することです)。
-p
渡されたコードに行ごとに渡すことを意味します(丸呑みしていることを除く)(-eを参照)
-e
コードが実行されることを期待します。
man perlrun
またはperldoc perlrun
詳細については。
これは、構文が似ているため、jquery を知っている人には少しなじみのある別の解決策です。これは Mojolicious のojo
モジュールを使用して、html コンテンツを Mojo::DOM オブジェクトにロードし、変換してから、その変換されたバージョンを出力します。
perl -Mojo -MFile::Slurp -E 'for (@ARGV) { say x(scalar(read_file $_))->at("#user-info")->replace("")->root; }' test.html test2.html test*.html
コンテンツを直接置き換えるには:
perl -Mojo -MFile::Slurp -E 'for (@ARGV) { write_file( $_, x(scalar(read_file $_))->at("#user-info")->replace("")->root ); }' test.html
これは div を削除するだけでなく、 Mojo の Mojo::DOM モジュールに基づいてコンテンツを再書き込みするため、タグ属性が同じ順序ではない可能性があることに注意してください。具体的には、 のように<div id="user-info2" class="logged-in">
書き換えまし<div class="logged-in" id="user-info2">
た。
Mojolicious には少なくとも perl 5.10 が必要ですが、それ以降はコア以外の要件はありません。