Como filtrar a saída 'cat' para exibir apenas uma parte do texto?

0

Estou tentando encontrar uma maneira de filtrar a saída de um comando cat para exibir apenas o texto incluído entre dois pontos. Eu preciso colocar isso em um script.

Mais ao ponto, considerando o seguinte texto de amostra

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

-------------
Release Notes
-------------

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

------------
Known Issues
------------

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

Eu preciso que a saída para apenas exiba o texto entre

-------------
Release Notes
-------------

e

------------
Known Issues
------------
blocos

.

Eu tentei algo com grep , mas sendo texto em várias linhas, não funciona (ou pelo menos eu não consegui fazer isso funcionar).

    
por Sekhemty 04.08.2016 / 12:22

1 resposta

3

Experimente o awk:

awk '/Release Notes/,/Known Issues/' file | head -n -3 | tail -n +4

O primeiro comando extrai o texto entre "Notas de lançamento" e "Problema conhecido", a cabeça e a cauda estão lá para remover a primeira e a última linha do seu exemplo. Se você não quer que o awk imprima as linhas combinadas, você deve usar:

awk '/^Release Notes$/{flag=1;next}/^Known Issues$/{flag=0}flag' file

    
por 04.08.2016 / 14:59