我有一个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
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
卡在那里。