TEORICAMENTE (usando varios conceitos de forma frenética): $ search(){ linha=$1 [[ "$l" =~ "00(01)+99" ]] || echo -e "Error: \nValor '$l' -> linha '$((1+max/2))' " tam=${#linha} max=$((max + tam)) } $ max=0 $ while read linha do search $linha done < <(cat data | cut -d\ -f2 | tr -d '\n' | sed 's/99/99\n/g' )
O que eu faço, junto todas as sequencias e procuro a expressão regular 00(01)+99 Neste caso, se casar 00010101010199 ou 000199, beleza. Vou contando quantos caracteres eu leio por vez, este valor, dividido por 2 e somado 1é o inicio do registro com problemas (ou ali por perto...) Ta meio confuso mas parece funcionar... Em 17/01/06, lferreir1 <[EMAIL PROTECTED]> escreveu: > > Humberto, boa tarde; > Grato pela sua dica. Foi a que mais serviu para o meu script. > Fiz algumas alterações pois trabalho com Solaris, em ksh. > Só alterei a condição [..] por if mesmo, e o resultado foi o esperado. > > Abraços, > Luiz > > --- Em shell-script@yahoogrupos.com.br, Humberto Pereira > <[EMAIL PROTECTED]> escreveu > > > > Boa tarde, > > > > suponhemos q na variavel SAIDA voce tenha o seu resultado. > > Voce pode fazer algo do tipo > > > > # quebra de linha eh o nosso separador agora > > IFS=$'\n' > > > > #sempre comeca com 00 > > next="00" > > > > # para cada linha da saida, faca... > > while line in $SAIDA; do > > # pega o tipo > > type=`echo $line | awk ' { print $2 } '` > > > > # o proximo do anterior eh diferente do atual? > > [ "$type" != "$next" ] && echo "Error: $line" > > > > case "$type" in > > # se o tipo for 00, o proximo eh 01, certo? > > "00") next="01" > > ;; > > # se o tipo for 01, o proximo eh 99. > > "01") next="99" > > ;; > > # ultimo, o proximo soh pode ser um 00 > > "99") next="00" > > ;; > > # tipo nao cadastrado > > *) echo "Error: $line" > > ;; > > esac > > done > > > > > > Acredito q isso resolva. > > > > []s > > Humberto Pereira > > > > > > lferreir1 wrote: > > > Boa tarde galera! > > > > > > Seguinte, tenho um arquivo de saída com o seguinte resultado do > > > comando #cat -n arquivo | cut -c1-9 | uniq -f1 > > > 1 00 > > > 2 01 > > > 260 99 > > > 261 00 > > > 262 01 > > > 268 99 > > > 269 00 > > > 270 01 > > > 273 99 > > > 274 00 > > > 275 01 > > > 294 99 > > > ........ > > > > > > Onde a primeira coluna significa o número da linha do arquivo e a > > > segunda coluna são os dados do tipo 00=header 01=detalhes > 99=trailler > > > Preciso checar neste arquivo se não está faltando algum registro > > > nesta sequência, como exemplo um 99 antes do 01. No exemplo acima > > > está tudo OK. > > > > > > Grato pela ajuda. > > > Luiz > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------ > --- > > > 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 > > > > > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > 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 > <http://br.rd.yahoo.com/SIG=12frea54v/M=387526.7663462.8697482.1588051/D=brclubs/S=2137111254:HM/Y=BR/EXP=1137531366/A=3242383/R=2/id=noscript/SIG=16fepr8g1/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10164&LID=293758&DGC=BA&DGStor=DHS&DGSite=Yahoo&Conum=BR&DURL=http://www1.la.dell.com/content/products/category.aspx/notebooks?c%3Dbr%26l%3Dpt%26s%3Ddhs> > ------------------------------ > *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]<[EMAIL PROTECTED]> > > - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do > Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>. > > -- ------------------------------ Tiago B Peczenyj Linux User #405772 [As partes desta mensagem que não continham texto foram removidas] --------------------------------------------------------------------- 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 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: http://br.yahoo.com/info/utos.html