[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Ocorrência em linha
From: |
Mauricy Maiorino |
Subject: |
Re: [shell-script] Ocorrência em linha |
Date: |
Wed, 10 May 2006 11:58:20 -0300 |
User-agent: |
Thunderbird 1.5.0.2 (X11/20060420) |
Pessoal
Olha eu de novo... estou tentando seguir esta dica do Humberto, esta
perfeita até o comando "sed 's/^\([^ ]\+\) .* \([0-9]\+bin\) .*$/\1
\2/'", mas o restante não está funcionando. Se tento o restante dos
comandos, eles me retornam a linha toda sem fazer nada.
Detalhe: apesar de estarmos vendo neste e-mail com "várias linhas",
estas linhas são apenas uma no arquivo de log real, ou seja uma linha
deste "tamanho" por registro.
Obrigado
Mauricy
Humberto Pereira escreveu:
> E ae pessoal,
>
> vamos lah tentar acertar esse sed.
>
> [begnini@coke tmp]$ cat a.txt
> IBL printer2
> hppibr_[JBM05D]-BIBLIOTECA(acct=BIBL,user=BIBL,copies=2,hppibr,simplex,landscape,usletter).PCLprintsrv
>
> Apr 1 2006 02:48:53 Apr 1 2006 03:04:05
> hppibr_[JBM05D]-BIBLIOTE 0002000010bin /O455.19
> BIBL 2
>
> samir printer1
> hpdocuprintr_ifch-I-FIL-C-HUMANAS-090000-samir(acct=ifch,user=samir,copies=50,hpdocuprintr,UsLetter,duplex,Portrait,09000000000000)--00E).PCL.PCL
>
> printsrv May 2
> 2006 19:00:19 May 2 2006 20:13:06 hpdocuprintr_ifch-I-FIL-
> 0050000004bin /O3243.36
> ifch 50
> [begnini@coke tmp]$
>
>
> Existe uma linha em branco entre as duas linhas, o q nao tem linha em
> branco significa q eh a mesma linha.
>
> A primeira coisa q a gente quer eh o nome do usuario. Entao vamos pegar
> todos os caracteres do comeco da linha ateh o primeiro espaco (Isso vai
> funcionar como um awk ' { print $1 } ' a.txt).
>
> [begnini@coke tmp]$ sed 's/^\([^ ]\+\) .*$/\1/' a.txt
> IBL
> samir
>
> Agora nos queremos pegar o campo que tem o bin com os numeros antes (Nao
> vou cometer o mesmo erro da expressao passada :P). Vamos procurar por
> tudo q contenha numeros seguido de bin e que tenha um espaco antes.
>
> [begnini@coke tmp]$ sed 's/^\([^ ]\+\) .* \([0-9]\+bin\) .*$/\1 \2/'
> a.txt
>
> IBL 0002000010bin
> samir 0050000004bin
>
> Legal, temos os 2 campos. Agora temos q pegar o penultimo campo. Veja q
> o ultimo campo sempre sao numeros. Entao o q tiver espaco e numero e
> estiver no fim da linha a gente casa.
>
> [begnini@coke tmp]$ sed 's/^\([^ ]\+\) .* \([0-9]\+bin\) .* [0-9]\+$/\1
> \2/' a.txt
>
> IBL 0002000010bin
> samir 0050000004bin
>
> Nossa expressao continua funcionando. Agora basta pegar o campo anterior
> (qquer coisa entre espacos) e mostrar ele.
>
> [begnini@coke tmp]$ sed 's/^\([^ ]\+\) .* \([0-9]\+bin\) .* \([^ ]\+\)
> \+[0-9]\+$/\1 \2 \3/' a.txt
>
> IBL 0002000010bin BIBL
> samir 0050000004bin ifch
>
> Bem, esses sao os campos que a gente precisa pegar. Um pouco trabalhoso,
> mas nada que ir dividindo o problema e testando passo a passo nao resolva.
>
> []s
> Humberto Pereira
>
>
> Mauricy Maiorino wrote:
>
>> BIBL tinha em outro exemplo que enviei, mas seguindo o exemplo abaixo, é
>> uma linha por registro e a posição de cada campo é definida por estes
>> "brancos". Isto é um log de impressão, e os nomes variam. Não sei se fui
>> claro!!
>>
>> Mauricy
>>
>>
>>
>> Tiago Barcellos Peczenyj escreveu:
>>
>>> BIBL ? onde tem BIBL nesse arquivo ?
>>>
>>> O que define a posição de cada campo nesse arquivo ? é uma linha por
>>> registro ?
>>>
>>> On 5/4/06, Mauricy Maiorino <address@hidden> wrote:
>>>
>>>
>>>> Funcionou legal, agora, não querendo abusar, estou usando "vários" awk
>>>> para selecionar o que preciso, porém estou vendo que com o sed acho que
>>>> consigo "encurtar" o caminho.
>>>>
>>>> Isto vai me ajudar muito, mas o que preciso mesmo são dos campos "BIBL"
>>>> (que pode variar o tamanho) o próprio campo contendo o "bin" e mais no
>>>> final novamente o "BIBL" (que também pode variar), como neste outro
>>>> exemplo abaixo:
>>>>
>>>> samir printer1
>>>> hpdocuprintr_ifch-I-FIL-C-HUMANAS-090000-samir(acct=ifch,user=samir,copies=50,hpdocuprintr,UsLetter,duplex,Portrait,09000000000000)--00E).PCL.PCL
>>>> printsrv May 2 2006 19:00:19 May 2 2006 20:13:06
>>>> hpdocuprintr_ifch-I-FIL-
>>>> 0050000004bin
>>>> /O3243.36 ifch 50
>>>>
>>>> ...onde eu precisaria dos campos "samir" "0050000004bin" "ifch"
>>>>
>>>> Se alguém tiver alguma idéia eu agradeço muito.
>>>>
>>>> Mauricy
>>>>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
[As partes desta mensagem que não continham texto foram removidas]
- Re: [shell-script] Re: Ocorrência em linha, (continued)
- Ocorrência em linha, Mauricy Maiorino, 2006/05/03
- Ocorrência em linha, Mauricy Maiorino, 2006/05/04
- Re: [shell-script] Ocorrência em linha, Tiago Barcellos Peczenyj, 2006/05/04
- Re: [shell-script] Ocorrência em linha, Mauricy Maiorino, 2006/05/04
- Re: Ocorrência em linha, Reinaldo Marques de Lima, 2006/05/04
- Re: [shell-script] Re: Ocorrência em linha, Flavio Junior, 2006/05/04
- Re: [shell-script] Re: Ocorrência em linha, Mauricy Maiorino, 2006/05/05
- Re: Ocorrência em linha, Mauricy Maiorino, 2006/05/05
- Re: [shell-script] Ocorrência em linha, Humberto Pereira, 2006/05/04
- Re: [shell-script] Ocorrência em linha,
Mauricy Maiorino <=
- Re: [shell-script] Ocorrência em linha, Humberto Pereira, 2006/05/11