awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}{$A = a[FNR];print $0}' B=1 A=2 f2 f1
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?
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.
Tags awk