2017-04-04 24 views
2

我有一個CSV,我想知道如何通過-更換換行,只需在兄弟柱,與bash格式化項目從CSV提要文件

name,brothers,age,adress 
------------------------ 
john,"marc 
peter 
paul 
alex",18,street 
thomas,mike,20,place 
+0

您需要一個正確的CSV解析器,並且Stack Overflow不是要求'bash'中的某個人推薦的地方。 – chepner

回答

1

在awk非常適合這個

awk -v RS='^$' -v ORS= '{while (match($0,/"[^"]+"/,a)) {gsub(/\n/," ",a[0]); print substr($0,1,RSTART-1) a[0]; $0=substr($0,RSTART+RLENGTH)} print}' your.csv 

輸出:

me,brothers,age,adress 
------------------------ 
john,"marc peter paul alex",18,street 
thomas,mike,20,place 
+0

完美,非常感謝 –

0

csvtoolsed,& bash笨拙的組合:

csvtool pastecol 2 1- \ 
     input.csv 
     <(csvtool col 2 input.csv | \ 
      sed -n '/"/,/"/{:a;N;$!ba;s/\([^"]\)\n/\1-/g;};p') | \ 
csvtool trim r - 

輸出:

name,brothers,age,adress 
------------------------ 
john,marc-peter-paul-alex,18,street 
thomas,mike,20,place 

sed的一部分,它不是那麼糟糕。 csvtool用編輯後的副本替換列。最後它修剪了一個額外的逗號csvtool卡在那裏。