2008/10/16 Karin Klayton Schiochet <[EMAIL PROTECTED]> > 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 <[EMAIL PROTECTED]> > > > > > 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 > > <[EMAIL PROTECTED]<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 > > <[EMAIL PROTECTED]<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]