awk 'BEGIN {p=0}; /&&&key word&&&/ { p = ! p ; next } ; p { print }' file
Isso imprime apenas as linhas entre duas instâncias correspondentes de &&&key word&&&
. A variável p
é usada como sinalizador para decidir se deseja imprimir ou não .... inicia como falso (não imprime) e é logicamente negado (revertido) sempre que &&&key word&&&
é correspondido em uma linha de entrada .
Se houver vários blocos de linhas de entrada limitados por &&&key word&&&
, TODOS esses blocos (mas nada mais) serão impressos. Se houver um começo &&&key word&&&
mas nenhum final que corresponda a ele, todas as linhas subseqüentes até o final do arquivo serão impressas.
Saída:
I want all
these text and numbers 123
and chars !"£$%&
as output
Se as palavras-chave inicial e final forem diferentes (por exemplo, "START" e "STOP"), você provavelmente desejará fazer algo mais assim:
awk 'BEGIN {p=0};
/START/ { p = 1 ; next };
/STOP/ { p = 0 ; next};
p { print }' file