Anexa a primeira coluna ao arquivo

0

Eu tenho um arquivo assim:

Heading1,Heading2
value1,value2

E outro que se parece com isso:

Row1
Row2

Como posso combinar os dois para se tornarem:

Row1,Heading1,Heading2
Row2,value1,value2

Anexando efetivamente uma coluna no lugar da primeira coluna?

    
por Pat Mustard 16.08.2017 / 09:04

2 respostas

5

Trabalho para paste :

paste -d, f2.txt f1.txt
  • -d, define o delimitador como , (em vez de tabulação)

com awk :

awk 'BEGIN {FS=OFS=","} NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' f2.txt f1.txt 
  • BEGIN {FS=OFS=","} define os separadores de campo de entrada e saída como ,

  • NR==FNR {a[NR]=$0; next} : para o primeiro arquivo ( f2.txt ), estamos salvando o número do registro como chave para uma matriz associativa ( a ) com valores sendo o registro correspondente

  • {print a[FNR], $0} : para o segundo arquivo, estamos apenas imprimindo o registro com o valor da chave numérica do registro de a preended

Exemplo:

% cat f1.txt             
Heading1,Heading2
value1,value2

% cat f2.txt             
Row1
Row2

% paste -d, f2.txt f1.txt
Row1,Heading1,Heading2
Row2,value1,value2

% awk 'BEGIN {FS=OFS=","} NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' f2.txt f1.txt 
Row1,Heading1,Heading2
Row2,value1,value2
    
por 16.08.2017 / 09:08
2

Outra abordagem curta de awk .

awk '{getline x<"file1"; print $0","x}' file2
  • getline x<"file1" lê a linha inteira de arquivo1 e mantém a variável x .
  • print $0","x imprime a linha inteira de arquivo2 usando $0 , em seguida, x , que é a linha salva de arquivo1 com vírgula entre.
por 16.08.2017 / 10:29