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: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
