grep
Grep es un comando para hacer búsquedas en textos, ya sean palabras, expresiones regulares, etc.
Para poder buscar multi línea podemos usar este patrón:
egrep -Pzo '(?s)linea1.*?linea2'
-P
grep
(una poderosa extensión de expresiones regulares)-z
grep
sabe dónde está el final de la línea, pero ve la entrada como una línea grande.-o
-z
, todo el archivo o texto es como una sola línea grande, por lo que si hubiera una coincidencia se imprimirá todo el archivo; de esta manera no hará eso.(?s)
PCRE_DOTALL
, lo que significa que el punto (.) encuentra cualquier carácter o nueva línea (
)..*?
Por ejemplo si queremos encontrar una interface en base a una descripción:
$ echo "interface FastEthernet0/10 > description cliente perico 4341 > switchport access vlan 123 > switchport mode access > load-interval 30 > no cdp enable > spanning-tree portfast" | grep -Pzo '(?s)interface FastEthernet(.*).*? description cliente perico 4341' interface FastEthernet0/10 description cliente perico 4341