19

Perl を使用して、複数の正規表現を検索および置換しています。次のコマンドを実行すると、エラーが発生します。

prompt> find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g' -pe 's/(\W)##/\1/g'
syntax error at -e line 2, near "s/(\W)##/\1/g"
Execution of -e aborted due to compilation errors.
xargs: perl: exited with status 255; aborting

複数を持つこと-eは Perl では有効ですが、なぜこれが機能しないのですか? これに対する解決策はありますか?

4

3 に答える 3

53

複数-eの を使用できます。

あなたは行方不明です';'

find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g;' -pe 's/(\W)##/\1/g;'

Perl ステートメントは で終わる必要があり;ます。ブロック内の最後のステートメントには、終了セミコロンは必要ありません。したがって、単一の-eなしでも機能しますが、複数のステートメントがある場合は;追加する必要があります。;-e

于 2012-05-03T02:13:48.417 に答える