O% GNUsort tem um sinalizador --parallel :
sort --parallel=8 data.tsv | uniq -c | sort --parallel=8 -n
Isso usaria oito processos / threads simultâneos para executar cada uma das duas etapas de classificação. A parte uniq -c ainda estará usando um único processo.
Como Stéphane Chazelas aponta nos comentários, a implementação GNU de sort já está em paralelo (está usando threads POSIX), portanto, modificar o número de threads simultâneos só é necessário se você quiser usar mais ou menos threads do que o você tem núcleos.
Observe que o segundo sort provavelmente receberá muito menos dados do que o primeiro, devido à uniq , portanto, será muito mais rápido.
Você também pode (possivelmente) melhorar a velocidade de classificação brincando com --buffer-size=SIZE e --batch-size=NMERGE . Veja o manual sort .
Para agilizar ainda mais a classificação, certifique-se de que sort grave seus arquivos temporários em um sistema de arquivos rápido (se houver vários tipos de armazenamento anexados). Você pode fazer isso configurando a variável de ambiente TMPDIR para o caminho do diretório gravável em tal ponto de montagem (ou use sort -T directory ).