shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ola.


From: Fábio Olivé Leite
Subject: Re: [shell-script] Ola.
Date: Wed, 23 Apr 2003 16:25:18 -0300
User-agent: KMail/1.4.3

Olá!

Em Qua 23 Abr 2003 15:37, Diego Luis Kreutz escreveu:
> Tenho o seguinte probleminha, e gostaria de resolver em shell
> script. Se for em C, resolvo em poucos minutos. :)

Em awk também, ó só:

$ cat entrada
.prima.net.ar
.sdsl-line.inode.at
.sdsl-line.inode.at
.nsw.optusnet.com.au
.vic.optusnet.com.au
.brutele.be
.brutele.be
.impsat.com.br
.intelignet.com.br
.intercon.psi.br
.ipaddr.abril.com.br
.ipb.diveo.net.br
.ipt.aol.br
.jlsonline.com.br
.lda.gvt.net.br

$ awk -F. '{ for (i = NF; i > 0; i--) { if (length($i) > 0) { printf 
"%s.", $i } }; printf "\n" }' entrada | sort | awk -F. '{ for (i = 
NF; i > 0; i--) { if (length($i) > 0) { printf ".%s", $i } }; printf 
"\n" }'
.prima.net.ar
.sdsl-line.inode.at
.sdsl-line.inode.at
.nsw.optusnet.com.au
.vic.optusnet.com.au
.brutele.be
.brutele.be
.ipt.aol.br
.ipaddr.abril.com.br
.impsat.com.br
.intelignet.com.br
.jlsonline.com.br
.ipb.diveo.net.br
.lda.gvt.net.br
.intercon.psi.br

Vamos olhar por partes:

awk -F. '{ for (i = NF; i > 0; i--) { if (length($i) > 0) { printf 
"%s.", $i } }; printf "\n" }' entrada

Esse awk-script inverte a ordem dos campos dentro de cada linha, 
usando como separador o '.'. Então ".abc.com" vira "com.abc.". Aí é 
só enviar via pipe pro sort, que faz o seu serviço. No final é 
necessário passar por outro awk-script muito parecido (mas não 
idêntico) que "desinverte" os campos:

awk -F. '{ for (i = NF; i > 0; i--) { if (length($i) > 0) { printf 
".%s", $i } }; printf "\n" }'

Abraços!

-- 
          Fábio Olivé Leite (foleite at yahoo.com.br)
OpenBSD: Unix casca grossa -*- KNOW THYSHELL (that is, man ksh)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]