コマンドラインからperlを使用して、テキストファイルから重複したスペースを置き換えています。
私が使用するコマンドは次のとおりです。
perl -pi -e 's/\s+/ /g' file.csv
問題: この手順では、結果のファイルの新しい行も削除されます....
なぜこれが発生するのか考えていますか?
ありがとう!
コマンドラインからperlを使用して、テキストファイルから重複したスペースを置き換えています。
私が使用するコマンドは次のとおりです。
perl -pi -e 's/\s+/ /g' file.csv
問題: この手順では、結果のファイルの新しい行も削除されます....
なぜこれが発生するのか考えていますか?
ありがとう!
\s
次の 5 文字を意味します: [ \f\n\r\t]
. したがって、改行を単一のスペースに置き換えています。-l
あなたの場合、最も簡単な方法は、フラグを使用して自動改行処理を有効にすることです。
perl -pi -le 's/\s+/ /g' file.csv
このように、改行は-e
ステートメントの前に詰め込まれ、後に追加されます。
前の回答に 2 セント追加します。この正規表現を perl スクリプト自体で使用する場合は、次のように変更できます。
s/[ ]+/ /gis;
これにより、すべての行が変更され、行末は削除されません。