Se houver algum motivo para você precisar classificar apenas o conteúdo do primeiro par de chaves, a maneira mais simples provavelmente é com um decorar-classificar-undecorate padrão . Eu vou usar sed
e cut
, mas há muitas opções para fazer isso funcionar no shell:
sed -e 's/^\([^{]*{\([^}]*\)}\)/ /' < data|sort|cut -d' ' -f2-
O comando sed
substitui tudo até o fim de o primeiro par de chaves com o conteúdo das chaves, um espaço e, em seguida, a seqüência original. Isso pode ser classificado como de costume. Eu estou então cut
do campo que eu adicionei no início novamente.
Isto irá lidar com caracteres ímpares na chave razoavelmente bem, e comprimentos desiguais, embora os espaços sejam um problema, e escape \}
seria também. Um separador diferente pode ser usado, se necessário.
Se os dados forem:
\newacronym{A}{EX}{Expanded}
\newacronym{F}{EX}{Expanded}
\newacronym{D}{EX}{Expanded}
\newacronym{C}{EX}{Expanded}
\newacronym[abc]{B}{EX}{Expanded}
\newacronym{CD}{EX}{Expanded}
\newacronym[def]{E}{EX}{Expanded}
o comando sed
resulta em:
A \newacronym{A}{EX}{Expanded}
F \newacronym{F}{EX}{Expanded}
D \newacronym{D}{EX}{Expanded}
C \newacronym{C}{EX}{Expanded}
B \newacronym[abc]{B}{EX}{Expanded}
CD \newacronym{CD}{EX}{Expanded}
E \newacronym[def]{E}{EX}{Expanded}
e o resto é simples.