2014-11-04 64 views
3

我的问题是,我有2列。 secound列中的文本使用逗号分隔值。我希望将2列以逗号分隔,并且第2列中的逗号分隔文本应保持原样。如何在UNIX中用逗号替换第一个空格

E.g:A,B是列的名称:

A B 
123 Hi There 
234 Hello there 

我想要的输出

A,B 
123,Hi There 
234,Hellothere 

有人可以帮我吗?

回答

8

您可以使用此命令sed

sed -r 's/\s+/,/' File_Name 

sed -r 's/ +/,/' File_Name 


-r, --regexp-extended 

      use extended regular expressions in the script. 

输出:

A,B 
123,Hi There 
234,Hello there 
+3

注意输出与OP所期望的不匹配。也许你想用'sed'/ \ + /,/''来替换列之间的多个空格。 – fedorqui 2014-11-04 12:17:43

+0

这是取代's'的第一次出现,而不是空间.. – user80040 2014-11-04 12:18:48

+2

@fedorqui,**谢谢**。你的建议改进了我的答案。 – Kalanidhi 2014-11-04 12:20:58

1

尝试,sed 's/ /,/' filename.txt

+0

注意这只适用于第一空间或任何你选择的字符搜索。 – 2016-02-06 07:54:12

+0

这对于osx10中的bash效果更好......它不支持'-r'正则表达式。如果您搜索为全球。它取代了所有的空间......但没有全局性,它只取代了每一行的第一个找到的空间。 – RightmireM 2016-06-15 14:20:09

相关问题