Mam plik, który przypisuje numery do sumy kontrolne md5 lubią następująco:awk asocjacyjna rośnie szybko
0 0000001732816557DE23435780915F75
1 00000035552C6F8B9E7D70F1E4E8D500
2 00000051D63FACEF571C09D98659DC55
3 0000006D7695939200D57D3FBC30D46C
4 0000006E501F5CBD4DB56CA48634A935
5 00000090B9750D99297911A0496B5134
6 000000B5AEA2C9EA7CC155F6EBCEF97F
7 00000100AD8A7F039E8F48425D9CB389
8 0000011ADE49679AEC057E07A53208C1
innym containts plik trzystronicowy sumy kontrolne MD5 w każdej linii jak następuje:
00000035552C6F8B9E7D70F1E4E8D500 276EC96E149571F8A27F4417D7C6BC20 9CFEFED8FB9497BAA5CD519D7D2BB5D7
00000035552C6F8B9E7D70F1E4E8D500 44E48C092AADA3B171CE899FFC6943A8 1B757742E1BF2AA5DB6890E5E338F857
Co chcę, aby zastępuje pierwszą i trzecią liczbę md5 w drugim pliku liczbami całkowitymi pierwszego pliku. Obecnie próbuję następujący skrypt awk:
awk '{OFS="\t"}FNR==NR{map[$2]=$1;next}
{print map[$1],$2,map[$3]}' mapping.txt relation.txt
Problemem jest to, że skrypt potrzebuje więcej niż 16g barana pomimo faktu, że pierwszy plik jest tylko 5,7 g na dysku twardym.
Nic nie można wykonaj inaczej w swoim skrypcie, aby zmniejszyć tę liczbę, z wyjątkiem podziału do pliku i robi to w porcjach. Jeśli tego właśnie potrzebuje, to właśnie tego potrzebuje. Przepraszam. btw niezwiązane - zmień '{OFS =" \ t "}' na 'BEGIN {OFS =" \ t "}' –
nie mówisz, jak duży jest drugi plik. Jeśli jest to ten sam numer linii co plik1, to nie widzę rozwiązania problemu z pamięcią 16G RAM. Powodzenia. – shellter
Dlaczego rozmiar drugiego pliku ma znaczenie? skrypty drukuje je tylko linia po linii z zamiennikami. – pNRuag