Como juntar dois csv com o mesmo número de linhas

5

Eu tenho dois arquivos CSV que são classificados e têm o mesmo número de linhas. Eu quero juntar esses dois arquivos CSV.

1.csv
1,2,3
4,5,6
7,8,9

2.csv
10,11,12
13,14,15
16,17,18

result.csv
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

eu tentei com  %código%  mas acrescenta em vez de aderir.

    
por John 10.01.2017 / 04:47

1 resposta

11

Trabalho para paste :

paste -d, {1,2}.txt

-d, define o delimitador como , . {1,2}.txt é a expansão de chaves, feita por shell, seria expandida para 1.txt 2.txt .

Se você gosta de um pouco de awk :

awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
  • NR==FNR será verdadeiro apenas para o primeiro arquivo; {a[FNR]=$0; next} cria uma matriz a com números de registro como chaves e registra como os valores

  • Para o segundo arquivo, {print a[FNR], $0} imprime o elemento da matriz no número da linha correspondente, seguido pelo registro atual; OFS=, define o separador do campo de saída como ,

Exemplo:

$ cat 1.txt 
1,2,3
4,5,6
7,8,9

$ cat 2.txt 
10,11,12
13,14,15
16,17,18

$ paste -d, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

$ awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18
    
por 10.01.2017 / 04:49

Tags