我在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"
删除数字和逗号 (,) 之间的空格