文の終わりに現れる2つのスペースをすべて1つのスペースに置き換えます。

文の終わりに現れる2つのスペースをすべて1つのスペースに置き換えます。

sedコマンドに正規表現を含めるのに問題があります。

尋ねる:後ろに表示される2つのスペースをすべて変更したいです。文章の終わり一度だけ使用できるスペースがあります。

私がしたことは次のとおりです。

sed 's/^ $/^$/' file  

そして、文が終わった後、2つのスペースを空白の1つに置き換えません。

私が得た結果は次のとおりです。

This is the output.  Hello Hello

私が望む出力:

This is the output. Hello Hello

答え1

あなたのsedコマンドは's/^ $/^$/'あなたが望むように機能しません。単に空白を含むすべての行を単一の空白を含む行に置き換えます^$

文の終わりを示す文字に応じて、次のことができます。

sed -e 's/\([.?!]\) \{2,\}/\1 /g' <file

これにより、2つ以上のスペースまたは1つのスペースのみが置き換え.られます。?!

答え2

 sed 's/\.   */. /g' < file

ドットの後に2つ以上のスペースが来るのをポイントの後にスペースが来るものに置き換えます。

答え3

これがあなたが探しているものかもしれません。

tr -s " " <filename

サンプル、

$ echo "This is the output.  Hello Hello" | tr -s "[:blank:]"
This is the output. Hello Hello

使用sed

$ echo "This is the output.  Hello Hello" | sed 's/\. \+/. /g'
$ echo "This is the output.  Hello Hello" | sed 's/\. \{1,\}/. /g'
This is the output. Hello Hello

関連情報