¿Cómo generar un párrafo específico basado en un patrón?

¿Cómo generar un párrafo específico basado en un patrón?

Tengo un archivo de muestra a continuación:

# This is a test file. This is a test file. This is a test file  
This is a test file. This is a test file. This is a test file.  
This is a test file.

# Need to output just this paragraph.Need to output just this paragraph.  
Need to output just this paragraph TOO. Need to output just this paragraph.  
Need to output just this paragraph.

Necesito generar solo el segundo párrafo desde "#" hasta la última oración del párrafo.

¿Cómo hago búsquedas y resultados según el patrón? Diga si el archivo tiene más párrafos y me gustaría generar el párrafo que contiene la palabra "TAMBIÉN".

Respuesta1

Si los párrafos están separados por líneas vacías:

awk -v RS= -v ORS='\n\n' /TOO/

Un separador de registros vacío ( RS) significamodo párrafodonde los registros están separados por secuencias de líneas vacías.

Si están #separados:

awk -v RS='#' '/TOO/ {print RS $0}'

o

pcregrep -Mo '#[^#]*?TOO[^#]*'
  • -Mpara multilíneagrep
  • -opara generar solo la porción coincidente

Respuesta2

perl -00ne 'print if /TOO/'
  • -00significa modo párrafo (los registros están separados por una o más líneas vacías).

información relacionada