Hmmm,

      o problema deve ser algum tab que tem em vez de espaco. Troque os
espacos por [:blank:]

[EMAIL PROTECTED] tmp]$ sed -r
's/^([^[:blank:]]+)[[:blank:]].*[[:blank:]]([0-9]+bin)[[:blank:]].*[[:blank:]]([0-9]+)$/\1
\2 \3/' a.txt
IBL 0002000010bin 2
samir 0050000004bin 50


[]s
Humberto Pereira

Mauricy Maiorino wrote:
> 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.
>>
>> [EMAIL PROTECTED] 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
>> [EMAIL PROTECTED] 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).
>>
>> [EMAIL PROTECTED] 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.
>>
>> [EMAIL PROTECTED] 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.
>>
>> [EMAIL PROTECTED] 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.
>>
>> [EMAIL PROTECTED] 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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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




Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a