Perlスクリプトから誤った結果を返す

Perlスクリプトから誤った結果を返す

Linuxシェルでこのコマンドを実行しましたが、スムーズに実行されました。

sed -i 's/\[-.*-]//g' error .txt

それがすることは、[-すべてのテキスト-]のようなパターンと角括弧と-記号を削除することです。

ただし、Perlスクリプトを介して実行しようとすると、「-」記号のみが削除されます。

使ってみよう system("sed -i 's/\[-.*-]//g' error.txt");

私は何が間違っていましたか?

ベストアンサー1

Perlでは文字列に二重引用符が使用されるため、\文字列はPerlで解釈されます。

二重バックスラッシュを使用してください。つまり、system("sed -i 's/\\[-.*-]//g' error.txt");

または[[]代わりに使用してください\[。つまり、system("sed -i 's/[[]-.*-]//g' error.txt");
このバリアントはシェルでも機能します。

おすすめ記事