Wie ersetze ich eine passende Zeichenfolge in einer Datei durch eine passende Zeichenfolge in einer anderen Datei?

Wie ersetze ich eine passende Zeichenfolge in einer Datei durch eine passende Zeichenfolge in einer anderen Datei?

Ich habe eine Datei wie diese:

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
...

Und noch eine Datei:

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
...

Ich möchte eine geänderte Datei cleandata.map erhalten, die folgendermaßen aussehen würde:

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
...

Wenn also die Zeile in der 2. Spalte von lifted.map mit der Zeile der 2. Spalte von cleandata.map übereinstimmt, ersetzen Sie die Zeile in der 2. und 4. Spalte und von cleandata.map durch den Wert der 4. Spalte in lifted.map.

Antwort1

Versuchen

$ 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

verwandte Informationen