
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[^#]*'
-M
para multilíneagrep
-o
para generar solo la porción coincidente
Respuesta2
perl -00ne 'print if /TOO/'
-00
significa modo párrafo (los registros están separados por una o más líneas vacías).