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

[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]
>
>  


reply via email to

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