¿Cómo reemplazo valores comunes en dos archivos según la primera columna?
Tengo el archivo 1 (1.txt):
CH063_01084
CH063_01083
CH063_13925
CH063_14473
y archivo 2 (2.txt):
CH063_01083 FGSG_16349 4
CH063_14473 FGSG_16350 5
el archivo de salida debe ser:
CH063_01084
CH063_01083 FGSG_16349 4
CH063_13925
CH063_14473 FGSG_16350 5
Respuesta1
Puedes usarjoin
para esto:
join -a 1 file1 file2
join
combina archivos basados en un campo común. Por defecto, ese es el primer campo de ambos archivos. -a 1
significa incluir líneas del primer archivo cuando no había ningún par. Para seleccionar campos distintos al primero, use -1 N -2 M
para seleccionar el campo N de file1
y M de file2
.
Respuesta2
Puedes usar join
:
$ join -a 1 file1.txt file2.txt
A
B asas 4
C
D addd 5
Si su archivo no está ordenado:
join -a 1 <(sort 1.txt) <(sort 2.txt)
Pero te hace perder el formato. Puedes usar perl
:
$ perl -anle ' $h{$F[0]} = $_;
END { print for sort values %h }
' file1.txt file2.txt