grep

Grep es un comando para hacer búsquedas en textos, ya sean palabras, expresiones regulares, etc.

Búsqueda milti línea

Para poder buscar multi línea podemos usar este patrón:

egrep -Pzo '(?s)linea1.*?linea2'
-P
activa perl-regexp para grep (una poderosa extensión de expresiones regulares)
-z
suprime salto de línea ( ) al final de la línea, sustituyéndolo por el carácter nulo. Es decir, grep sabe dónde está el final de la línea, pero ve la entrada como una línea grande.
-o
imprime solo lo que coincide. Como usamos -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)
activa PCRE_DOTALL, lo que significa que el punto (.) encuentra cualquier carácter o nueva línea ( ).
.*?
Encuentra cualquier caracter (.) en modo non-greedy, es decir, lo más corto posible.

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

Retro

Lugares

Redes

Sistemas

Varios