Ordenar texto por ordem crescente com o sort SHELL SCRIPT [RESOLVIDO]

1. Ordenar texto por ordem crescente com o sort SHELL SCRIPT [RESOLVIDO]

Geovano Bitelo
gbitelo

(usa Ubuntu)

Enviado em 12/03/2017 - 11:51h

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.


  


2. MELHOR RESPOSTA

Marcelo Oliver
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




3. Re: Ordenar texto por ordem crescente com o sort SHELL SCRIPT [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/03/2017 - 19:53h

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




4. Re: Ordenar texto por ordem crescente com o sort SHELL SCRIPT [RESOLVIDO]

Geovano Bitelo
gbitelo

(usa Ubuntu)

Enviado em 12/03/2017 - 21:43h

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.




5. Re: Ordenar texto por ordem crescente com o sort SHELL SCRIPT [RESOLVIDO]

Geovano Bitelo
gbitelo

(usa Ubuntu)

Enviado em 12/03/2017 - 23:16h

msoliver escreveu:

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



É isso mesmo Marcelo, obrigado!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts