Suponiendo que los datos están estructurados de modo que siempre sea la línea anterior y posterior a la que desea, puede usar los interruptores grep -A
(after) y -B
(before) para indicar que incluya la línea 1 antes del partido y la línea 1 después:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Si desea las mismas líneas numéricas antes y después del término de búsqueda, puede usar el -C
interruptor (contexto):
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
Si desea ser más estricto al hacer coincidir las líneas múltiples, puede usar la herramienta pcregrep
, para hacer coincidir un patrón en varias líneas:
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
El patrón anterior coincide de la siguiente manera:
-M
- líneas múltiples
'Pseudo.*\n.*42B.*\nstate.*'
- coincide con un grupo de cadenas donde la primera cadena comienza con la palabra "Pseudo"
seguida de cualquier carácter hasta el final de la línea \n
, seguido de cualquier carácter hasta la cadena "42B"
seguido de cualquier carácter hasta el otro extremo de la línea ( \n
), seguido de la cadena "state"
seguido de cualquier personaje.