我有一个包含以下数据的文件:
1 abcd hello world 5000
(注意:每个单词之间有15个空格和#34; hello world"是一个单独的条目,其间有一个空格)
我必须用一个逗号(,)替换15个空格。 "你好和"世界"之间的单一空间应保持原样。
我尝试过sed和tr命令的各种组合,但没有任何工作。
答案 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个空格的麻烦。