Eu removeria o separador ( awk
está procurando por linhas ímpares), classificá-lo em um arquivo temporário (veja os comentários) e depois sed esse arquivo para adicionar o separador de volta.
awk 'NR%2==1' myfile | sort -o tmpfile; sed -r 's/$/\n\%/g' tmpfile
Isso resulta em stdout
, então coloque um > myfile
no final dele, se você quiser enviar de volta para o seu arquivo. Deixei-o nu para que você possa testá-lo.
Barra lateral: Existem cerca de cem maneiras diferentes de lidar com a reinserção dos separadores. Tudo isso funcionaria:
awk '{print $0"\n%"}'
while read line; do echo -e "$line\n%"; done
xargs -i^ echo -e "^\n%" # won't work with a redirection >