2017-09-16 53 views
1

csv文件的第1行的CSV文件的第一行的值具有由逗號,像這樣分離的值:擊 - 如何包裹與報價

word1,word2,word3,word4,word5 

,但需要與像報價包裹如下:

"word1","word2","word3","word4","word5" 

我想要一個命令只處理第1行,並保留文件的其餘部分。

+0

感謝賽勒斯的幫助。我感激你。 –

回答

2

考慮這個測試文件:

$ cat file.csv 
word1,word2,word3,word4,word5 
12345,12346,12347,12348,12349 

塗在項目報價僅在第一行:

$ sed '1 { s/^/"/; s/,/","/g; s/$/"/ }' file.csv 
"word1","word2","word3","word4","word5" 
12345,12346,12347,12348,12349 

它是如何工作

  • 1 { ... }

    這告訴sed只對1號線

  • s/^/"/

    這使得報價在該行開始執行在括號中的命令。

  • s/,/","/g

    這種替換報價逗號引號每個逗號。

  • s/$/"/

    這使得報價在生產線的末端。

+1

工作就像一個魅力。謝謝! –

0

AWK另一種方法:

awk -F, 'NR==1{ gsub(/[^,]+/,"\"&\"",$0) }1' file 
  • NR==1 - 只考慮第一個記錄
+0

感謝羅馬與我分享你的知識。非常感謝。 –