Ich habe eine Datei, die Zahlen zu md5sums weist wie folgt:awk assoziatives Array wächst schnell
0 0000001732816557DE23435780915F75
1 00000035552C6F8B9E7D70F1E4E8D500
2 00000051D63FACEF571C09D98659DC55
3 0000006D7695939200D57D3FBC30D46C
4 0000006E501F5CBD4DB56CA48634A935
5 00000090B9750D99297911A0496B5134
6 000000B5AEA2C9EA7CC155F6EBCEF97F
7 00000100AD8A7F039E8F48425D9CB389
8 0000011ADE49679AEC057E07A53208C1
eine andere Datei containts drei md5sums in jeder Zeile wie folgt:
00000035552C6F8B9E7D70F1E4E8D500 276EC96E149571F8A27F4417D7C6BC20 9CFEFED8FB9497BAA5CD519D7D2BB5D7
00000035552C6F8B9E7D70F1E4E8D500 44E48C092AADA3B171CE899FFC6943A8 1B757742E1BF2AA5DB6890E5E338F857
Was ich will Ersetzen Sie die erste und dritte MD5-Datei in der zweiten Datei durch die Ganzzahlen der ersten Datei. Derzeit versuche ich den folgenden awk-Skript:
awk '{OFS="\t"}FNR==NR{map[$2]=$1;next}
{print map[$1],$2,map[$3]}' mapping.txt relation.txt
Das Problem ist, dass das Skript mehr, dass 16g ram trotz der Tatsache muss, dass die erste Datei nur 5,7 g auf der Festplatte ist.
Es gibt nichts Sie könnten Tue es in deinem Skript anders, um diese Zahl zu reduzieren, mit Ausnahme von Split die Datei auffüllen und in Blöcken tun. Wenn es das ist, dann ist es das, was es braucht. Es tut uns leid. btw nicht verwandt - ändern Sie '{OFS =" \ t "}' zu 'BEGIN {OFS =" \ t "}' –
Sie sagen nicht, wie groß die 2. Akte ist. Wenn es die gleiche Anzahl von Zeilen wie Datei1 ist, dann sehe ich keine Lösung für Ihr 16G RAM-Problem. Viel Glück. – shellter
Warum sollte die Größe der zweiten Datei von Bedeutung sein? Die Skripte werden nur Zeile für Zeile mit Ersetzungen gedruckt. – pNRuag