[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:_[shell-script]_escrever_at�_encontrar_determinada_string
From: |
moysespr |
Subject: |
Re:_[shell-script]_escrever_até_encontrar_determinada_string |
Date: |
Wed, 14 Jan 2004 11:17:58 -0800 (PST) |
"Poderia da mesma forma fazer na própria shell, lendo até
que encontrasse o padrão..."
Isso já tentei várias vezes, inclusive hoje e, mesmo consultando sempre Mr.
Man Bash não estou achando meu erro. Como gosto de usar o bash plenamente
gostaria de juntar:
<&3
>arq.tmp
<<.
e experimentar, dispensando cat, etc.
Eu vinha usando o read do bash e o echo com sucesso, mas ao surgirem linhas
como esta "a\\bc" coisas indesejadas começam a acontecer. O melhor é uma
escrita/leitura binária, sem interpretações, que acredito, o < e o > podem
fazer.
A questão é como juntar isso?!
--- Felipe Kellermann <address@hidden> wrote:
>
> On Wed, 14 Jan 2004 5:48am -0800, moysespr wrote:
>
> > Ainda não achei a solução para a seguinte questão:
>
> Ae Moyses,
>
>
> > Em um script tenho um socket recebendo dados de um determinado servidor e
> ao
> > encontrar uma string especÃfica é necessário encerrar a coleta e retornar o
> > controle para o script. Em termos de problema é como ter um arquivo no
> disco e
> > dar um "cat arquivo", onde a saÃda seria truncada na tal string.
>
> Que neste caso poderia ser usado o `split', mas mesmo assim IIRC
> não há nenhuma forma de especificar quantas são as partes ('contextos')
> que tu quer pegar. Vou ver melhor isto, depois.
>
>
> > A string specifica no momento é ponto sózinho em uma linha, só que as
> linhas
> > não são terminadas apenas com hexa 0a (como no unix) mas com 0d0a (como no
> > DOS). A seqüência de bytes de encerramento é então 0d 0a 2e 0d 0a.
>
> Acho que é mais fácil imaginar a linha apenas como '2e 0d 0a'.
>
>
> > Em outras situações posso precisar fazer encerramento após receber "n"
> bytes.
> > Isso eu consegui com o "dd", mas não sei se é a solução mais indicada.
>
> Na minha opinião, sim.
> Uma outra alternativa poderia ser o 'split' ou o 'head', também.
>
>
> > Poderiam apresentar as diversas opções possÃveis?
>
> Tu tá usando os devices especiais, não é? Bom, mas mesmo se não
> for, depois de estar com algum `device' já especificado para pegar os
> dados, uma das alternativas poderia ser:
>
> sed '/^.\r$/q' <&p && retorna e fecha o device p
>
> Se for preciso ficar sem o ponto, só modificar um pouco o sed ou
> tirar depois ele. Poderia da mesma forma fazer na própria shell, lendo até
> que encontrasse o padrão e depois 'p<&-'. Ou também poderia ser feito com
> awk ou qualquer coisa, :-)
>
> --
> Felipe Kellermann
>
__________________________________
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus