31

我想用逗号分隔符替换每个字段之间的空格。有人可以告诉我该怎么做。我尝试了以下命令,但它不起作用。谢谢。

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
4

8 回答 8

59

如果您在谈论sed,则此方法有效:

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

vim中,使用相同的正则表达式替换:

s/ /,/g
于 2012-11-24T06:07:42.343 回答
10

在里面vim,你想在正常(命令)模式下输入:

:%s/ /,/g

在终端提示符下,您可以使用sed对文件执行此操作:

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

注意:-i选项sed表示“就地编辑”,因为它将修改输入文件。

于 2012-11-24T06:10:43.917 回答
3

我知道这不是您要问的,但是,用换行符替换逗号,这很好用:

tr , '\n' < file
于 2015-01-08T00:15:39.980 回答
3

尝试以下命令,它应该适合您。

sed "s/\s/,/g" orignalFive.csv > editedFinal.csv
于 2016-10-23T19:54:34.957 回答
2

如果你想在终端上输出,那么,

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

但是如果你想编辑文件本身,如果你想用文件中的逗号替换空格,那么,

$sed -i 's/ /,/g' filename.txt
于 2017-08-18T05:26:36.117 回答
2

如果您的数据包含任意序列的空白字符(制表符、空格),并且您想用一个逗号替换每个序列,请使用以下命令:

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

或者

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

如果要替换空格字符序列,其中包括其他字符,例如回车符和退格符等,请使用以下内容:

sed -r 's/[[:space:]]+/,/g' input_file
于 2018-12-17T09:05:08.360 回答
1

我刚刚确认:

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

在 Cygwin 终端(mintty 2.9.0)中成功地用逗号替换空格。其他样本都不适合我。

于 2019-05-21T19:26:27.437 回答
-1

在 Linux 上使用下面的测试(它将用逗号替换空格)

 sed 's/\s/,/g' /tmp/test.txt | head

稍后您可以使用以下命令将输出放入文件中:

sed 's/\s/,/g' /tmp/test.txt > /tmp/test_final.txt

PS:test是你要使用的文件

于 2018-12-21T06:51:52.247 回答