[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Cortar string na terceira barra
From: |
Flavio Junior |
Subject: |
Re: [shell-script] Cortar string na terceira barra |
Date: |
Tue, 29 Jan 2008 18:05:28 -0200 |
Bom..
Vi que vc usou o sed + awk e tal...
Talvez esse esquema com o GAWK te ajude ...
lazlo:~# gawk '{print gensub(/(.*\/\/)([^\/]+)\/.*$/,"\\1\\2",1,$4)}' txt
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
http://br.archive.ubuntu.com
lazlo:~#
Vou falar da regex:
PS: \/ == escape + "/" == \ / ...
(.*\/\/) => Fazer um grupo de tudo até "//", ou seja, http:// ftp://
https:// ... Isso será nosso grupo 1
([^\/]+) => O nosso grupo 2 será, a partir do 1, tudo o que encontrar
que NAO for uma "/", ou seja o host.dominio...
\/.*$ => Depois eu digo, a partir do grupo 2 (assim que ele terminar)
terá uma "/" e um qualquer coisa (.*) até o fim de linha ($)
No caso, da pra perceber que minha regex pegou TODO o conteudo da
linha, começando com "Tudo até //", "do // até a proxima /" e fechando
com "tudo até o final da linha"... Ai eu substituo tudo que minha
regex encontrou, pelos 2 grupos que me interessa, que é o grupo 1 e o
grupo 2 e o restante se perde, é onde ta ali "\\1\\2" (no awk o uso de
retrovisores para os grupos é um pouco diferente).
Espero ter sido claro.
--
Flávio do Carmo Júnior
2008/1/29 Adriano Carneiro de Moura <address@hidden>:
>
>
>
>
>
>
> simplesmente fantástico, não canso de elogiar esta lista que é simplesmente
> fenomenal.
> meu muito ao Flavio Júnior, e a todos.
> quem me deras se as outras listas que participo tivesse 1/10 da eficiência
> desta lisa.
>
> eu dei mais uma icrementada:
> sed -r 's#(.*//)([^ /]+)/.*$# \1\2#' /tmp/teste | awk '{print $1" "$2" "$4"
> "$8}' | sort -u
>
> não entendi direito o sed, vou dar uma estudada melhor nele.
>
> muito obrigado.
>
> Flavio Junior <address@hidden> escreveu: Veja se isso ajuda:
>
> lazlo:~# cat txt
> 29/01/2008 15:59:01 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-data-tds2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:02 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-sharpzip2.84-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:05 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system-data2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:06 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-sqlite2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:14 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system-web2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:23 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system1.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:26 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> 29/01/2008 15:59:28 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.1.2.dfsg-1.2ubuntu2_i386.de
> 29/01/2008 15:59:29 192.168.0.127
>
> http://br.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.1.2.dfsg-1.2ubuntu2_i386.de
> lazlo:~# sed -r 's#(.*//)([^/]+)/.*$#\1\2#' txt
> 29/01/2008 15:59:01 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:02 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:05 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:06 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:14 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:23 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:26 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:28 192.168.0.127 http://br.archive.ubuntu.com
> 29/01/2008 15:59:29 192.168.0.127 http://br.archive.ubuntu.com
> lazlo:~#
>
> --
>
> Flávio do Carmo Júnior
>
> 2008/1/29 Adriano Carneiro de Moura <address@hidden>:
> >
> >
> >
> >
> >
> >
> > pessoal,
> >
> > estou usando o seguinte comando para ter uma lista de data, hora e site
> que
> > os ips acessaram.
> >
> > # awk '{print $1" "$2" "$4" "substr($8,0,length($8))}' < /tmp/teste |
> sort
> > -u
> > 29/01/2008 15:59:01 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-data-tds2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:02 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-sharpzip2.84-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:05 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system-data2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:06 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-sqlite2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:14 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system-web2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:23 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono-system1.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:26 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/m/mono/libmono2.0-cil_1.2.3.1-1ubuntu1.1_all.de
> > 29/01/2008 15:59:28 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.1.2.dfsg-1.2ubuntu2_i386.de
> > 29/01/2008 15:59:29 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.1.2.dfsg-1.2ubuntu2_i386.de
> > 29/01/2008 15:59:29 192.168.0.127
> >
> http://br.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisfile3_1.1.2.dfsg-1.2ubuntu2_i386.de
> >
> > o que preciso é cortar cada linha até a quinta "/" de tal maneira que eu
> > tenha somente o site que o ip acessou não os links internto.s
> >
> > desde já agradeço.
> >
> > ---------------------------------
> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> > armazenamento!
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
>
>
>
> ---------------------------------
> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> armazenamento!
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>