我有 csv ,我想知道如何使用-
在兄弟列中bash
替换换行符:
name,brothers,age,adress
------------------------
john,"marc
peter
paul
alex",18,street
thomas,mike,20,place
答案 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)
csvtool
,sed
和&的笨拙组合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
卡在那里的额外逗号。