3

ライセンス付きのjavadoc行を削除したいJavaファイルがたくさんあります[コードで変更しています]。

私が探しているパターンは

^\* \* ProjectName .* USA\.$

しかし、行全体で一致

sed [または Windows/Linux で一般的に使用されるエディター] が複数行パターンの検索/置換を行う方法はありますか?

4

3 に答える 3

3

これは、私のお気に入りの sed チュートリアルの適切な参照ポイントです。

于 2008-10-06T14:25:13.167 に答える
1

おそらく誰かがまだ時々そのような解決策を探しています。これが1つです。

awk を使用して、削除する行を見つけます。次に、diff を使用して行を削除し、sed をクリーンアップさせます。

awk "/^\* \* ProjectName /,/ USA\.$/" input.txt \
  | diff - input.txt \
  | sed -n -e"s/^> //p" \
  >output.txt

警告: 最初のパターンが存在し、2 番目のパターンが存在しない場合、最初のパターンの下にあるすべてのテキストが失われるため、最初に確認してください。

于 2014-10-10T14:22:05.900 に答える
0

はい。この問題を解決するために、sed、awk、perl などを使用していますか?

ほとんどの正規表現ツールでは、複数行のパターンを指定できます。貪欲すぎる正規表現には注意してください。そうしないと、コメント間のコードが存在する場合に一致してしまいます。

次に例を示します。

/\*(?:.|[\r\n])*?\*/
perl -0777ne 'print m!/\*(?:.|[\r\n])*?\*/!g;' <file>

まとめて実行されるすべてのコメントを出力します。(?: 表記は、非キャプチャ括弧に使用する必要があります。/ は、! が式を区切るため、エスケープする必要はありません。-0777 はスラープ モードを有効にするために使用され、-n は自動読み取りを有効にします。

(出典: http://ostermiller.org/findcomment.html )

于 2008-10-06T14:34:48.810 に答える