ライセンス付きのjavadoc行を削除したいJavaファイルがたくさんあります[コードで変更しています]。
私が探しているパターンは
^\* \* ProjectName .* USA\.$
しかし、行全体で一致
sed [または Windows/Linux で一般的に使用されるエディター] が複数行パターンの検索/置換を行う方法はありますか?
これは、私のお気に入りの sed チュートリアルの適切な参照ポイントです。
おそらく誰かがまだ時々そのような解決策を探しています。これが1つです。
awk を使用して、削除する行を見つけます。次に、diff を使用して行を削除し、sed をクリーンアップさせます。
awk "/^\* \* ProjectName /,/ USA\.$/" input.txt \
| diff - input.txt \
| sed -n -e"s/^> //p" \
>output.txt
警告: 最初のパターンが存在し、2 番目のパターンが存在しない場合、最初のパターンの下にあるすべてのテキストが失われるため、最初に確認してください。
はい。この問題を解決するために、sed、awk、perl などを使用していますか?
ほとんどの正規表現ツールでは、複数行のパターンを指定できます。貪欲すぎる正規表現には注意してください。そうしないと、コメント間のコードが存在する場合に一致してしまいます。
次に例を示します。
/\*(?:.|[\r\n])*?\*/
perl -0777ne 'print m!/\*(?:.|[\r\n])*?\*/!g;' <file>
まとめて実行されるすべてのコメントを出力します。(?: 表記は、非キャプチャ括弧に使用する必要があります。/ は、! が式を区切るため、エスケープする必要はありません。-0777 はスラープ モードを有効にするために使用され、-n は自動読み取りを有効にします。