将多个 .csv 文件中的一列连续数字合并到单个 .csv 文件中

将多个 .csv 文件中的一列连续数字合并到单个 .csv 文件中

我在Linux/Centos7上。我有多个 csv 文件要合并,我正在使用此命令进行合并。

cat *csv > all.csv

但第一列包含一个连续编号,需要按顺序合并和重新编号。

==> 1.csv <==
1,bob,date,body
2,joe,date,body
3,ann,date,body

==> 2.csv <==
1,lisa,date,body
2,paul,date,body
3,mike,date,body

我希望结果将第一列重新编号为这样

==> output.csv <==
1,bob,date,body
2,joe,date,body
3,ann,date,body
4,lisa,date,body
5,paul,date,body
6,mike,date,body

当我进行常规合并时,我有这个,如果我可以重新编号这个合并文件,它也可以工作。

1,bob,date,body
2,joe,date,body
3,ann,date,body
1,lisa,date,body
2,paul,date,body
3,mike,date,body

答案1

这个命令会做你想做的事

cat *.csv | cut  --complement -d',' -f1 |sed -e 's/^/,/' |nl |sed -e "s/ //g"|sed -e "s/\\t//g" >all.csv

cut --complement -d',' -f1将剪掉第一列,你将获得

bob,date,body
joe,date,body
ann,date,body
lisa,date,body
paul,date,body
mike,date,body

sed -e 's/^/,/'将在每行的开头添加一个 ,

,bob,date,body
,joe,date,body

nl 将在每行的开头添加数字

 1  ,bob,date,body
 2  ,joe,date,body
 3  ,ann,date,body
 4  ,lisa,date,body

并将sed -e "s/ //g"|sed -e "s/\\t//g"删除数字和逗号 (,) 之间的空格

相关内容