![Wie ersetze ich eine passende Zeichenfolge in einer Datei durch eine passende Zeichenfolge in einer anderen Datei?](https://rvso.com/image/170255/Wie%20ersetze%20ich%20eine%20passende%20Zeichenfolge%20in%20einer%20Datei%20durch%20eine%20passende%20Zeichenfolge%20in%20einer%20anderen%20Datei%3F.png)
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