msoliver
(usa Debian)
Enviado em 12/03/2017 - 22:04h
gbitelo escreveu:
msoliver escreveu:
gbitelo escreveu:
Olá pessoal,
Será que alguém poderia me ajudar?
Preciso ordenar um texto em ordem crescente com o comando sort. Por exemplo, tenho um arquivo com nomes e sobrenomes de pessoas:
Pedro Silva
Maria Santos
João Rosa
Marcos Farias
Preciso ler este arquivo e ordenar o sobrenome em ordem crescente e salva-lo em outro arquivo. Ficaria desta forma:
João Rosa (pois este sobrenome tem 4 letras, então fica em primeiro)
Pedro Silva (sobrenome com 5 letras)
Marcos Farias (sobrenome com 6 letras)
Maria Santos (sobrenome com 6 letras, no entanto, alfabeticamente o S vem depois do F, por isso deve ficar na sequencia)
Grato.
Boa noite gbitelo.
A ORDENAÇãO é pela quantidade de caracteres ou pela sequência do alfabeto, [a-z]?
marcelo oliver
Boa noite, msoliver
A ordenação é pela quantidade de caracteres.
Segue sugestão:
ncmin=$(while IFS=" " read -r C1 C2;do echo ${#C2}; done < nomes |sort|uniq|head -n1)
ncmax=$(while IFS=" " read -r C1 C2;do echo ${#C2}; done < nomes |sort|uniq|tail -n1)
while IFS=" " read -r C1 C2;do
for ((nc=ncmin;nc<=ncmax;nc++));do
((${#C2}==nc)) && echo "$nc:$C1 $C2"
done
done<nomes|sort|awk -F":" '{print $2}' > ARQ_ORD.txt
É isso. . .
Se a resposta foi satisfatória, marque o tópico como resolvido, e a minha resp como a MELHOR . . .
marcelo oliver
______________________________________________________________________________
EDITADO.
Simplificando:
while IFS=" " read -r c1 c2;do
nc=${#c2}
echo "$nc:$c1 $c2"
done<nomes|sort|awk -F":" '{print $2}' > ARQ_ORD.txt
marcelo oliver