在unix中用逗号替换多个空格

时间:2015-06-23 15:29:59

标签: bash unix sed tr

我有一个包含以下数据的文件:

1               abcd               hello world               5000

(注意:每个单词之间有15个空格和#34; hello world"是一个单独的条目,其间有一个空格)

我必须用一个逗号(,)替换15个空格。 "你好和"世界"之间的单一空间应保持原样。

我尝试过sed和tr命令的各种组合,但没有任何工作。

2 个答案:

答案 0 :(得分:5)

这是sed的作业:

$ sed -r 's/ {15}/,/g' file
1,abcd,hello world,5000

或者,没有允许扩展正则表达式的-r标志:

$ sed 's/ \{15\}/,/g' file
1,abcd,hello world,5000

这说:获得15个空格并用逗号替换它们。较小的空间将不会被替换。

答案 1 :(得分:0)

只是一个改进,因为你已经有了正确的答案:

这将用','

替换至少2个连续空格的任何序列
sed -r 's/ {2,}/,/g' file
1,abcd,hello world,5000

这将允许“hello world”或使用单个空格作为分隔符的任何其他字符串,并且还可以省去必须确保您有15个空格的麻烦。