copia uma seção de dados de stdin [closed]

1

Estou executando um script que recebe sua entrada de stdin. Esta entrada pode acabar sendo muito grande, então eu quero extrair a parte em que estou interessado em um arquivo temporário.

A primeira linha contém "[cics]" e eu quero escrever tudo a partir desse ponto até o próximo "[" para um arquivo temporário.

Nunca realmente trabalhei com stdin em scripts antes de não ter certeza de como fazer isso.

    
por dazedandconfused 31.10.2013 / 12:33

2 respostas

3

Tente usar:

awk 'BEGIN { RS="[" } { if (index($0, "cics]") == 1) print; }'

Para filtrar sua entrada. Não incluirá os caracteres [ .

Sugiro usar a saída de awk diretamente, em vez de usar um arquivo temporário.

    
por 31.10.2013 / 13:50
1

Você pode fazer isso facilmente com sed :

sed -n '/\[cics\]/,/\[/p' <<-END
    one
    two [cics]
    three
    four
    [five]
    six
    [seven]
    [cics] eight
    [nine]
    ten
    END
two [cics]
three
four
[five]
[cics] eight
[nine]
    
por 31.10.2013 / 14:35