使用 CSV 文件中的换行符重新格式化项目



我有一个csv,我想知道如何用-替换换行符,就在兄弟列中,用bash

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

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

csvtoolsedbash 的笨拙组合:

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将第 2 列替换为已编辑的副本。 最后,它修剪了一个额外的逗号,csvtool卡在那里。

最新更新