複数のスペースを見つけて1つのスペースに置き換える方法は?

複数のスペースを見つけて1つのスペースに置き換える方法は?

重複した空白(複数)を見つけて1つの空白に置き換えたいと思います。私は試した:

sed -e 's/ []+/ /g' myfile.txt > myfile2.txt

これにより、空のファイルが生成されます。なぜ?私の目標を達成する方法は?

答え1

コマンドが無効です。sed: -e expression #1, char 10: unterminated 's' command標準出力が生成されないため、空のファイルがある可能性があります。

努力するsed -e 's/ \+/ /g' myfile.txt > myfile2.txt

返品:https://stackoverflow.com/questions/22939323/sed-command-to-replace-multiple-spaces-into-single-spaces

答え2

標準からsed1つ以上のSPC文字を検索するには、構文は次のとおりです。

sed 's/ \{1,\}/ /g'

または

sed 's/  */ /g'

(星の前にスペースが2つあります。)またはもっと読みやすくするには、次の手順を実行します。

sed 's/[ ][ ]*/ /g'

-E(拡張正規表現の場合)標準に追加された場合(これは次のメジャーPOSIXバージョンで発生する必要があり、多くの実装ですでにサポートされている)、次のこともできます。

sed -E 's/ +/ /g'

一部の実装では、基本正規表現(除く)をエイリアスとして理解することもsedできます。\+-E\{1,\}

ただし、ここでは直接使用できますtr

tr -s ' ' < file.in > file.out

到着Sスペースをいっぱいにしてください。

関連情報