¿Cómo reemplazar una cadena coincidente en un archivo con una cadena coincidente en otro archivo?

¿Cómo reemplazar una cadena coincidente en un archivo con una cadena coincidente en otro archivo?

Tengo un archivo como este:

head cleandata.map
1   1:775852:T:C    0   775852
1   1:1120590:A:C   0   1120590
1   1:1145994:T:C   0   1145994
1   1:1148494:A:G   0   1148494
...

Y otro archivo:

head lifted.map
1   1:775852:T:C    0.0 785989
1   1:1120590:A:C   0.0 1130727
1   1:1145994:T:C   0.0 1156131
1   1:1148494:A:G   0.0 1158631
...

Lo que quiero cambiar es cleandata.map, que se vería así:

1   1:785989:T:C    0   785989
1   1:1130727:A:C   0   1130727
1   1:1156131:T:C   0   1156131
1   1:1158631:A:G   0   1158631
...

Entonces, si la fila en la segunda columna de lifting.map coincide con la fila de la segunda columna de cleandata.map, reemplace la fila en la segunda y cuarta columna y de cleandata.map con el valor de la cuarta columna en lift.map.

Respuesta1

Intentar

$ awk 'FNR==NR {T[$2] = $4; next} $2 in T {gsub ($4, T[$2])} 1' file2 file1
1   1:785989:T:C    0   785989
1   1:1130727:A:C   0   1130727
1   1:1156131:T:C   0   1156131
1   1:1158631:A:G   0   1158631

información relacionada