sort
pode classificar em várias colunas com tipos diferentes, mas exige que o delimitador seja um único caractere. Para lidar com o seu exemplo e produzir a saída esperada, você pode substituir o primeiro ';' com '|', em seguida, classifique na primeira coluna alfanumericamente, em seguida, no sétimo (ex-sexto) numericamente e, finalmente, substitua o primeiro '|' com ';':
sed 's/;/|/' < FNAM.txt | sort -t\| -k1,1 -k7,7n | sed 's/|/;/'
A variante que você tentou,
sort -t "|" -k 6,6n FNAM.txt
classifica o arquivo completo somente na sexta coluna, numericamente; sort
não tem conhecimento de nenhuma estrutura sobre a qual você não fala, portanto, ela não sabe que deve agrupar as linhas pelos primeiros caracteres. Então você acaba com a última coluna completamente ordenada, o que significa misturar os nomes das tabelas.