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

时间:2017-04-04 16:12:23

标签: linux bash shell

我有 csv ,我想知道如何使用-兄弟列中bash替换换行符:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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用已编辑的副本替换列 2 。最后它修剪了csvtool卡在那里的额外逗号。