Provavelmente você não pode usar awk
hashes, pois isso significaria armazenar todas as linhas exclusivas na memória. Então, só poderia ser usado se o arquivo de saída for significativamente menor que a memória disponível no sistema.
Se os arquivos de entrada já estiverem classificados, você poderia fazer:
sort -mu A.txt B.txt > C.txt
Pode ser necessário alterar a localidade para uma que tenha a mesma ordem de classificação usada para classificar os arquivos.
Isso não precisa armazenar mais de uma linha de cada arquivo na memória de cada vez.
Se eles não foram classificados, remova o -m
, defina $TMPDIR
para um diretório em um sistema de arquivos (preferencialmente rápido) com 170 GB de espaço livre e esteja preparado para aguardar um pouco.
O resultado, no entanto, será classificado, o que acelerará a fusão de outro arquivo mais tarde, se necessário.
sort
usará arquivos temporários, para que funcionem mesmo no sistema com pouca memória. Mas quanto mais memória você tiver, melhor. Com o GNU sort
, consulte também as opções --compress-program
e --buffer-size
, que podem ajudá-lo a melhorar o desempenho. Se a ordem de classificação usada não for importante para você, corrija a localidade para C
(com LC_ALL=C sort...
), pois isso seria o mais eficiente.