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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Leitura de Arquivo


From: Fabiano Caixeta Duarte
Subject: Re: [shell-script] Leitura de Arquivo
Date: Thu, 16 Oct 2008 20:29:41 +0000

2008/10/16 Karin Klayton Schiochet <address@hidden>

> Senhores,
>
> Eu fiz um teste conforme repassaram nas dicas de de verta forma deu
> certo;
>
> Vai exemplo:
> =========================================
> arq1.txt
> ITEM CAMPO_1 CAMPO_2 CAMPO_3
> 01 qwerty aqwer qweryt
> 02 qwerty1 qwerr qerttyd
> 03 qwerty3 qewrtr qetroip
> 04 qwerty4 qetrt qçlkwteç
>
> FIM DO ARQUIVO
>
> ITEM CAMPO_1 CAMPO_2 CAMPO_3
> 01 qwerty aqwer qweryt
> 02 qwerty1 qwerr qerttyd
> 03 qwerty3 qewrtr qetroip
> 04 qwerty4 qetrt qçlkwteç
> =========================================
>
> Código;
>  1 #!/bin/bash
>  2 #
>  3 VAR="FIM DO ARQUIVO"
>  4 VAR2="Station MAC, First time seen, Last time seen, Power, #
> packets, BSSID, Probed ESSIDs"
>  5 VAR3="Station MAC,"
>  6 while read linha;
>  7 do
>  8         if ! [ "$linha" = "$VAR" ]; then
>  9
>  10         echo $linha
>  11         else
>  12                 exit 1
>  13         fi
>  14 done < arq.txt
>
> Neste exemplo ocorreu corretamente, ele parou na linha em que queria que
> parasse e assim é possível tratar de forma adequada.
>
> Agora quando coloco outro arquivo que é o que eu estou tentando fazer o
> programa para ele, o mesmo não esta funcionando, ele não para na linha
> correta.
>
> ============================================================
> BSSID, First time seen, Last time seen, channel, Speed, Privacy, Cipher,
> Authentication, Power, # beacons, # IV, LAN IP, ID-length, ESSID, Key
> 00:02:6F:3A:97:C1, 2008-10-09 19:19:40, 2008-10-09 19:19:43, 11,   5,
> WEP , WEP,   ,   0,        7,        6,   0.  0.  0.  0,   0, ,
> 00:1C:10:54:4C:19, 2008-10-09 19:19:40, 2008-10-09 19:19:43, 11,  54,
> WPA , TKIP,PSK,   0,        3,        0,   0.  0.  0.  0,  14,
> familiaIKETANI,
> 00:0A:52:00:E8:C9, 2008-10-09 19:19:40, 2008-10-09 19:19:41,  8,  11,
> WEP , WEP,   ,   0,        7,        3,   0.  0.  0.  0,   4, WIND,
> 00:18:39:60:E0:3B, 2008-10-09 19:19:43, 2008-10-09 19:19:43,  6,  54,
> WPA , CCMP,PSK,   0,        2,        0,   0.  0.  0.  0,   9,
> linksysSM,
>
> Station MAC, First time seen, Last time seen, Power, # packets, BSSID,
> Probed ESSIDs
> 00:16:6F:A4:AB:21, 2008-10-09 19:19:40, 2008-10-09 19:19:43,   0,
> 66, (not associated) ,
> 00:0B:6B:4F:7C:8F, 2008-10-09 19:19:42, 2008-10-09 19:19:42,  -1,
> 1, 00:02:6F:3A:97:C1,
> 00:12:0E:59:EB:7E, 2008-10-09 19:19:42, 2008-10-09 19:19:43,  -1,
> 4, 00:02:6F:3A:97:C1,
> 00:02:6F:3A:96:72, 2008-10-09 19:19:43, 2008-10-09 19:19:43,  -1,
> 1, 00:02:6F:3A:97:C1,
> 00:15:AF:8F:5C:36, 2008-10-09 19:19:43, 2008-10-09 19:19:43,   0,
> 7, (not associated) , aberto
>
> =========================================================
> è o mesmo código modificando a variável para VAR2.
>
> Puts pior que depois que eu copiei o código para o e-mail ocorreu de
> aparecer estes símbolos no final de cada linha, sera por esse motivo que
> ele não esta funcionando.
>
> Atenciosamente,
> Karin Klayton
>
> Em Qui, 2008-10-16 às 08:04 -0400, Édnei Rodrigues escreveu:
> > É, bem lembrado. Você quer ler o arquivo,
> >
> > Logo:
> >
> > Cat arquivo.txt | while read linha do
> >
> > Pronto, assim ele pega linha por linha, até o final. A variável
> > "linha" é a
> > que guarda a linha do arquivo lida.
> >
> > 2008/10/16 Humberto Cruz <address@hidden>
> >
> > > Karin, me parece que o comando read só irá ler a primeira linha do
> > > arquivo. Deve ter outra forma de fazer o que voce quer, se puder
> > > explicar melhor o que deseja...
> > >
> > > []s
> > > Humberto
> > >
> > > 2008/10/16 Édnei Rodrigues
> > <address@hidden<ednei.felipe.rodrigues%40gmail.com>
> > > >:
> > >
> > > > Qual é o erro que aparece? Qual é a saída ?
> > > >
> > > > if ! [ $linha = $VAR ]
> > > >
> > > > Isso não é entre aspas duplas ?
> > > > if ! [ "$linha" = "$VAR" ]
> > > >
> > > > 2008/10/15 Karin Klayton Schiochet
> > <address@hidden<karinklayton%40gmail.com>
> > > >
> > > >
> > > >> Senhores,
> > > >>
> > > >> Fazendo uma rápida apresentação, meu nome é Karin Klayton, sou
> > > >> Administrador de Redes e moro em Belém/Pa. Sou novo no grupo e
> > tenho
> > > >> lido bastante material a respeito de shell-script e já fiz alguns
> > > >> programas bem legal em shell-script.
> > > >>
> > > >> A minha duvida é a seguinte, estou tentando via shell-script ler
> > uma
> > > >> arquivo que é gerado de um programa em execução, e guardar linha
> > a linha
> > > >> para poder tratar os dados.
> > > >>
> > > >> Fiz algumas coisas mais até o momento não tive sucesso.
> > > >> Exemplo: arquivo.txt
> > > >> ITEM CAMPO_1 CAMPO_2 CAMPO_3
> > > >> 01 qwerty aqwer qweryt
> > > >> 02 qwerty1 qwerr qerttyd
> > > >> 03 qwerty3 qewrtr qetroip
> > > >> 04 qwerty4 qetrt qçlkwteç
> > > >>
> > > >> FIM DO ARQUIVO
> > > >>
> > > >> ITEM CAMPO_1 CAMPO_2 CAMPO_3
> > > >> 01 qwerty aqwer qweryt
> > > >> 02 qwerty1 qwerr qerttyd
> > > >> 03 qwerty3 qewrtr qetroip
> > > >> 04 qwerty4 qetrt qçlkwteç
> > > >>
> > > >> O que testei até o momento:
> > > >>
> > > >> VAR="FIM DO ARQUIVO"
> > > >> while read linha;
> > > >> do
> > > >> if ! [ $linha = $VAR ]
> > > >> echo $linha
> > > >> fi
> > > >> done < arquivo.txt
> > > >>
> > > >> Tentei algumas variantes seguindo esta linha do if tentando
> > comparar com
> > > >> a var que será constante mais não consegui.
> > > >>
> > > >> Agradeço qualquer informação mesmo que seja indicando material
> > para
> > > >> estudar.
> > > >>
> > > >> Um grande abraço a todos,
> > > >>
>

Se você está estudando os comandos envolvidos na solução, o caminho é este.
Por outro lado, se o objetivo é resolver de forma simples o problema,
recomendo estudar também outras ferramantas como por exemplo o sed.

Veja por exemplo isto:
sed '1,/^FIM DO ARQUIVO$/!d' arq | sed '$d'

-- 
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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