AWK: filtrar linhas e ordenar!

1. AWK: filtrar linhas e ordenar!

Diego Rocha
diegrocha

(usa Fedora)

Enviado em 27/02/2010 - 14:54h

Fala galera!
Tenho um arquivo gigante onde a ideia é a seguinte:

aquivo.txt abaixo com 6 linhas e 5 colunas.
-----------------
azul 4.3 b3 2003 0.75
verde 3.3 f1 2004 0.76
preto 4.1 a4 2002 0.49
verde 3.3 f3 2006 0.82
azul 4.3 b5 2008 0.78
verde 3.3 f2 2005 0.79

Como posso filtrar todas as linhas com resultado "verde"da primeira coluna(com suas respectivas colunas seguintes) e organizar-las em ordem crescente de acordo com a 3° coluna?
ex: (1° passo - filtrar todas linhas com resultado "verde")
verde 3.3 f1 2004 0.76
verde 3.3 f3 2006 0.82
verde 3.3 f2 2005 0.79

RESULTADO FINAL:
ex: (2° passo colocar as linhas em ordem crescente de acordo com a 3° coluna "f1/f2/f3")

verde 3.3 f1 2004 0.76
verde 3.3 f2 2005 0.79
verde 3.3 f3 2006 0.82

obs : precisaria das dos valores das outras colunas nas linhas como exemplo acima

Se conseguirem resolver esse desafio, ficarei muito grato!

abçs


  


2. Re: AWK: filtrar linhas e ordenar!

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 29/03/2010 - 08:39h

Acho que você postou isso no lugar errado.. :S

Nem eu deveria tá postando isso aqui também xD, mas já que eu também tinha essa dúvida, então vou postar a solução.
obs: Estava procurando no google como ordenar colunas e acabei caindo aqui ..

De bobeira encontrei a opção -k do sort, que indica em qual coluna você quer ordenar.

O sed faz o trabalho de localizar todas as linhas que começam com verde, e o sort ordena baseado na terceira coluna:

$ sed -n '/^verde/p' <seu_arquivo> | sort -k3

Abraços
t+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts