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