3

コマンドラインからperlを使用して、テキストファイルから重複したスペースを置き換えています。

私が使用するコマンドは次のとおりです。

perl -pi -e 's/\s+/ /g' file.csv

問題: この手順では、結果のファイルの新しい行も削除されます....

なぜこれが発生するのか考えていますか?

ありがとう!

4

2 に答える 2

8

\s次の 5 文字を意味します: [ \f\n\r\t]. したがって、改行を単一のスペースに置き換えています。-lあなたの場合、最も簡単な方法は、フラグを使用して自動改行処理を有効にすることです。

perl -pi -le 's/\s+/ /g' file.csv

このように、改行は-eステートメントの前に詰め込まれ、後に追加されます。

于 2012-11-30T11:10:35.787 に答える
0

前の回答に 2 セント追加します。この正規表現を perl スクリプト自体で使用する場合は、次のように変更できます。

s/[ ]+/ /gis;

これにより、すべての行が変更され、行末は削除されません。

于 2012-11-30T11:24:05.900 に答える