Estou fazendo uma classificação única em um conjunto concatenado de arquivos de índice, onde a primeira coluna às vezes muda entre cada índice e a segunda coluna será um valor de chave (na verdade, endereços hexadecimais). Cada iteração do arquivo indexN registra os endereços que foram alterados desde o anterior - se o endereço 0xaa11 existir no index3, na saída mesclada + classificada ele deverá substituir as referências de endereço 0xaa11 do index1 e do index2.
A questão é, posso fazer esse tipo de mesclagem confiável com uma ferramenta como o GNU sort
se eu simplesmente enviar cada índice de origem para sort -u
em uma determinada ordem?
Por exemplo, indexe os índices mais recentes para os mais antigos:
cat index3 index2 index1 | sort -u -k 2,2
Quando eu testo isso, parece preservar as linhas de index3 contendo endereços que também aparecem em index2 e index1, enquanto remove as referências duplicadas vindas de index2 e index1.
Mas será que sempre é o caso? A página sort
man é vaga sobre isso:
-u --unique output only the first of an equal run
Não sei o suficiente sobre os algoritmos do GNU sort para prever se as linhas com chaves correspondentes serão sempre classificadas na mesma ordem em que seus arquivos de origem foram concatenados (por exemplo, a ordem em que aparecem no fluxo de origem). Mas eu sei que algoritmos de classificação nem sempre funcionam de forma linear. É por isso que estou procurando esclarecimentos sobre qual tipo de documentação parece implicar.