Substituir coluna em um arquivo com coluna de outro usando awk? [duplicado]

1

Eu tenho dois arquivos:

arquivo1.txt:

111|aaa|444
222|bbb|555 
333|ccc|666

arquivo2.txt:

111
(null)
333 

substituindo a coluna dois do arquivo1 pela coluna 1 do arquivo2

Resultado esperado

novo:

111|111|444
222||555
333|333|666

Estou usando o comando abaixo,% awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}$A = a[FNR]' B=1 A=2 file2.txt file1.txt > new.txt

Saída que estou recebendo,

novo:

111|111|444
333|333|666

Estou perdendo o segundo registro. como evitar a perda de registro?

    
por dhinchek 01.03.2016 / 11:14

2 respostas

3
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}{$A = a[FNR];print $0}' B=1 A=2 f2 f1
    
por 01.03.2016 / 11:45
0

Como alternativa, você pode usar paste e cut para isso:

paste -d'|' <(cut -d'|' -f1 file1) <(cat file2) <(cut -d'|' -f3 file2)

Eu não sei dizer qual é o melhor em termos de velocidade.

    
por 01.03.2016 / 13:30

Tags