Ordenar linhas desconsiderando certas palavras [RESOLVIDO]

1. Ordenar linhas desconsiderando certas palavras [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 26/10/2017 - 10:44h

Usando o exemplo abaixo, como faço para ordenar as linhas sem considerar a palavra "AA"?
333
111
AA 555
444
AA 222

Deve ficar assim:
111
AA 222
333
444
AA 555

PS.: Lembrando que os números aí são só exemplos, o comando que preciso deve ser "generalista", tanto para letras como números.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/10/2017 - 16:23h

Ryuk escreveu:

msoliver escreveu:
Boa tarde Ryuk, veja se é o que deseja:
for NN in $(awk '{print $NF}' arquivo|sort);do grep "${NN}$" arquivo ;done 

Att.:
Marcelo Oliver


Valeu Marcelo,
Pelo o que entendi o comando ordena de acordo com a última palavra de cada linha, certo!?
Não era bem isso que eu queria. Meu exemplo talvez não tenha deixado claro, mas imagine que as linhas tem quantidades diferentes de "palavras":
333 abc
111 def blablabla
AA 555 ghi blablabla 123
AA 222 jlk
444 mno blablabla

Eu quero ordenar sem levar em conta "AA", mas pegando o termo logo em seguida:
111 def blablabla
AA 222 jlk
333 abc
444 mno blablabla
AA 555 ghi blablabla 123


Exatamente, no exemplo anterior "ordenei" pelo ultimo campo.
Veja se o exemplo abaixo, atende . . . :
sed -r 's/^[A]+//g' Novo |sort|sed 's/^[ ]/AA /'
111 def blablabla
AA 222 jlk
333 abc
444 mno blablabla
AA 555 ghi blablabla 123

No exemplo acima, é excluído o "AA", ordeno e retorno o o "AA"

Att.:
Marcelo Oliver

3. Re: Ordenar linhas desconsiderando certas palavras [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 26/10/2017 - 14:24h

CarlosEduLinux escreveu:
...


Essa gambiarra tá muito complexa... :)
Deve ter um jeito mais "simples" de fazer isso, usando uma única linha de comando (talvez usando o awk).


4. Re: Ordenar linhas desconsiderando certas palavras [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/10/2017 - 15:43h

Ryuk escreveu:

Usando o exemplo abaixo, como faço para ordenar as linhas sem considerar a palavra "AA"?
333
111
AA 555
444
AA 222

Deve ficar assim:
111
AA 222
333
444
AA 555

PS.: Lembrando que os números aí são só exemplos, o comando que preciso deve ser "generalista", tanto para letras como números.

Boa tarde Ryuk, veja se é o que deseja:
for NN in $(awk '{print $NF}' arquivo|sort);do grep "${NN}$" arquivo ;done 

111
AA 222
333
444
AA 555

Att.:
Marcelo Oliver


5. Re: Ordenar linhas desconsiderando certas palavras

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 26/10/2017 - 19:55h

msoliver escreveu:
Boa tarde Ryuk, veja se é o que deseja:
for NN in $(awk '{print $NF}' arquivo|sort);do grep "${NN}$" arquivo ;done 

Att.:
Marcelo Oliver


Valeu Marcelo,
Pelo o que entendi o comando ordena de acordo com a última palavra de cada linha, certo!?
Não era bem isso que eu queria. Meu exemplo talvez não tenha deixado claro, mas imagine que as linhas tem quantidades diferentes de "palavras":
333 abc
111 def blablabla
AA 555 ghi blablabla 123
AA 222 jlk
444 mno blablabla

Eu quero ordenar sem levar em conta "AA", mas pegando o termo logo em seguida:
111 def blablabla
AA 222 jlk
333 abc
444 mno blablabla
AA 555 ghi blablabla 123




6. Re: Ordenar linhas desconsiderando certas palavras [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 27/10/2017 - 19:47h

msoliver escreveu:

Veja se o exemplo abaixo, atende . . . :
sed -r 's/^[A]+//g' Novo |sort|sed 's/^[ ]/AA /'

No exemplo acima, é excluído o "AA", ordeno e retorno o o "AA"


Perfeito, era exatamente isso que eu queria.
Obrigado!!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts