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 [email protected], 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