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

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

Re: [shell-script] detectar próxima linha de arquivos de remessa


From: Julio C. Neves
Subject: Re: [shell-script] detectar próxima linha de arquivos de remessa
Date: Tue, 24 Aug 2010 13:28:51 -0300

Não sei se te entendi, mas me pareceu que seu problema era juntar as linhas
que começam com 2 às linhas anteriores à estas. Se assim for, uma boa forma
de fazer um one-liner seria:

grep -B1 ^2 Arquivo | grep -v '^-*$' | paste -d "" - -

Onde o grep procura as linhas começadas por 2 (^2) e vem junto a linha
anterior (-B1). A saída disso terá um separador '--' entre cada par de
linhas, então o grep seguinte (^-*$) visa excluir estas linhas.

Para concatená-las, usei o paste com delimitador vazio (-d "" [o branco
entre o d e a 1ª aspa é obrigatório]) e o par de traços, onde cada traço
receberá uma linha da entrada primária.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- SE turma de Shell/Zenity em 13/09 - address@hidden
- SP turma de Shell em 14/08 - www.4Linux.com.br
<http://www.4linux.com.br/>
- Turmas fechadas em outras cidades ligue (21)8112-9988.

--- @ WiseStamp
Signature<http://my.wisestamp.com/link?u=63n3xfgzns9kh5v7&site=www.wisestamp.com/email-install>.
Get it 
now<http://my.wisestamp.com/link?u=63n3xfgzns9kh5v7&site=www.wisestamp.com/email-install>


Em 23 de agosto de 2010 21:58, mrgraucio <address@hidden>escreveu:

>
>
> Olá pessoal, quebrei muito a cabeça e decidi correr para vós.
>
> Preciso fazer o seguinte, eu recebo arquivos de remessas em que cada
> transação as vezes tem 1 linha e as vezes tem 2.
>
> A primeira linha tem 80 caracteres. A segunda varia de acordo com a
> transação.
>
> A primeira sempre começa com o número 1 indicando o tipo da transação, bem
> como a segunda que, quando existente, sempre começa com 2.
>
> O meu dilema é como fazer com que o shell detecte que, quando a próxima
> linha iniciar por 2 (se ela existir) eu a leia juntamente com a anterior?
>
> Eu tenho em mente fazer o seguinte, faria a leitura inicialmente de tudo
> que começa com 1 mas a linha seguinte não começa com 2 e depois elimiaria
> tudo que começa com este mesmo resultado, adicionando o -v no grep no
> comando dado anteriormente, correto?
>
> Ná prática a coisa acontece com o recebimento de um arquivo de lotes que
> vem cheinho de linhazinhas mais ou menos como a seguir:
>
>
> 10012010052500289870989500400642010052516141900000000000000000100600010900100000
>
> 10012010052500289870989500410642010052516171300000000000000000100600010900100000
>
> 10012010052500289870989500420642010052516190600000000000000000100600010900100000
>
> 10012010052500289870989500440592010052516260800000000000000000100600010900100000
>
> 10012010052500289870989500451072010052516265800000000000000000100600010900100000
> 2008200000070835
>
> 10012010052500289870989500460592010052516421500000000000000000100600010900100000
>
> 10012010052500289870989500471072010052516424300000000000000000100600010900100000
> 2008200000070837
>
> Gostaria então de primeiramente separar os valores que unicamente começam
> com 1 mas não tem a linha subsequente iniciando por 2, após fazer essa
> separação, só adicionaria o -v ao grep, caso seja com ele a possibilidade de
> fazer isso.
>
> Espero ter sido claro e me desculpem pela extensão da pergunta, mas temo
> não explicar corretamente a necessidade.
>
> Grande abraço!
>
>  
>


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



reply via email to

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