[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] escrever até encontrar determinada string
From: |
Felipe Kellermann |
Subject: |
Re: [shell-script] escrever até encontrar determinada string |
Date: |
Wed, 14 Jan 2004 12:20:16 -0200 (BRST) |
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