Use sed para imprimir linhas selecionadas dentro de um intervalo

1

Considere o arquivo simplificado

AAA
BBB
CCC1
DDD
EEE
CCC2
DDD
FFF
GGG
CCC3
HHH

Eu posso escolher o intervalo EEE to FFF com

sed -n '/EEE/,/FFF/p'

Suponhamos que eu queira imprimir qualquer linha contendo C , mas somente dentro do intervalo correspondente. Eu posso canalizar o resultado de sed a grep

sed -n '/EEE/,/FFF/p' | grep 'C'

Eu também poderia fazer o intervalo e combinar em um pequeno script awk (ou perl , python , etc.). Mas como eu faria isso usando apenas uma invocação de sed ?

    
por roaima 29.09.2018 / 11:43

2 respostas

9

Use um bloco no qual você diz ao sed para imprimir somente quando ele vê C:

sed -n '/EEE/,/FFF/{/C/p}'
    
por 29.09.2018 / 11:47
4

Você pode tentar:

sed '/EEE/,/FFF/!d;/C/!d'
    
por 29.09.2018 / 11:57