O comando usual sort
não fornece uma maneira incluída para especificar seu "dicionário" específico, e enquanto o comando grep
permite que você forneça um arquivo de expressões regulares, ele não mudará a ordem do saída. Mas você pode colocar os dois juntos em um simples foreach
loop - aqui está um exemplo que funciona no bash shell:
for i in 'cat fileofregexp'; do grep "$i" myinputfile; done
Isso pega cada linha regexp do seu arquivo de expressões regulares, uma a uma, e produz qualquer correspondência do seu arquivo de entrada, então a saída resultante será ordenada pela sua ordem regexp. Note que qualquer linha no seu arquivo de entrada que não corresponda a todos, não irá para a saída.
Adendo: Conforme solicitado, aqui está uma versão usando um while
loop:
while IFS= read -r i; do grep "$i" myinputfile; done < fileofregexp