2014-11-04 132 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

相關問題