
Tenho um arquivo de exemplo abaixo:
# 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.
Preciso gerar apenas o segundo parágrafo, começando em "#" até a última frase do parágrafo.
Como faço o grep e a saída com base no padrão? Diga se o arquivo tem mais parágrafos e eu gostaria de gerar o parágrafo que contém a palavra "TOO".
Responder1
Se os parágrafos estiverem separados por linhas vazias:
awk -v RS= -v ORS='\n\n' /TOO/
Um separador de registros vazio ( RS
) significamodo parágrafoonde os registros são separados por sequências de linhas vazias.
Se eles estiverem #
separados:
awk -v RS='#' '/TOO/ {print RS $0}'
ou
pcregrep -Mo '#[^#]*?TOO[^#]*'
-M
para multilinhagrep
-o
para gerar apenas a parte correspondente
Responder2
perl -00ne 'print if /TOO/'
-00
significa modo parágrafo (os registros são separados por uma ou mais linhas vazias).