Mesclando uma coluna de números sequenciais em vários arquivos .csv em um único arquivo .csv [duplicado]

0

Estou no Linux / Centos7. Eu tenho vários arquivos csv que eu quero mesclar, estou usando este comando para mesclar.

cat *csv > all.csv

Mas a primeira coluna contém um número sequencial que precisa ser mesclado e renumerado em ordem seqüencial.

==> 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

Eu gostaria que o resultado renumerasse a primeira coluna para ser assim

==> 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

Quando faço uma mesclagem regular, eu tenho isso, e se eu posso renumerar esse arquivo mesclado que funcionaria também.

1,bob,date,body
2,joe,date,body
3,ann,date,body
1,lisa,date,body
2,paul,date,body
3,mike,date,body
    
por paulcap1 02.12.2016 / 13:15

1 resposta

0

Este comando fará o que você quiser

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 cairá na primeira coluna e você obterá

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

sed -e 's/^/,/' adicionará a, no começo de cada linha

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

nl adicionará o número no começo de cada linha

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

e sed -e "s/ //g"|sed -e "s/\t//g" excluirão os espaços entre o número e a vírgula (,)

    
por 02.12.2016 / 15:01