web-dev-qa-db-ja.com

sedを使用してスペースをカンマに置き換える方法は?

各フィールド間の空のスペースをコンマ区切り文字に置き換えたいと思います。誰かにこれを行う方法を教えてもらえますか?.

My command:
:%s//,/


53 51097 310780 1
56 260 1925 1
68 51282 278770 1
77 46903 281485 1
82 475 2600 1
84 433 3395 1
96 212 1545 1
163 373819 1006375 1
204 36917 117195 1
24
Teja

sedについて話している場合、これは機能します。

sed -e "s/ /,/g" < a.txt

vimで、同じ正規表現を使用して置き換えます:

s/ /,/g
43
mvp

vimの内部では、通常(コマンド)モードのときに入力する必要があります。

:%s/ /,/g

ターミナルプロンプトで、sedを使用してファイルでこれを実行できます。

sed -i 's/\ /,/g' input_file

注:sed-iオプションは、入力ファイルを変更するという点で、「インプレース編集」を意味します。

8
sampson-chen

私はそれがまさにあなたが求めているものではないことを知っていますが、コンマを改行で置き換えるために、これはうまくいきます:

tr , '\n' < file
3
determinacy

次のコマンドを試してみてください。

sed "s/\s/,/g" orignalFive.csv > editedFinal.csv

ターミナルでの出力が必要な場合は、

$sed 's/ /,/g' filename.txt

ただし、ファイル自体を編集する場合i.e。ファイル内のスペースをコンマに置き換える場合は、

$sed -i 's/ /,/g' filename.txt
1
Kumar Gaurav

私はちょうどそれを確認しました:

cat file.txt | sed "s/\s/,/g"

cygwin端末のスペースをコンマで正常に置き換えます(mintty 2.9.0)。他のサンプルはどれも役に立たなかった。

1
xiphos71

データに空白文字(タブ、スペース)の任意のシーケンスが含まれており、各シーケンスを1つのコンマに置き換える場合は、次を使用します。

sed 's/[\t ]+/,/g' input_file

または

sed -r 's/[[:blank:]]+/,/g' input_file

キャリッジリターンやバックスペースなどの他の文字を含む一連のスペース文字を置き換える場合は、次を使用します。

sed -r 's/[[:space:]]+/,/g' input_file
0
H.Alzy