
Digamos que tengo un archivo de texto con el contenido:
foo
bar
whatever
something I don't know
bar2
whatever
Y, como resultado de hacer grep whatever myfile.txt
(y/o sed
y/o awk
), me gustaría tener:
foo
something I don't know
Intenté usar la opción -B 2
pero eso genera ambos foo
y bar
.
No puedo hacerlo ... | grep -v bar
porque hay muchos registros diferentes.
Respuesta1
No grep, pero debería funcionar:
awk '/grep_string/ {imprimir a} {a=b;b=$0}' archivo
Respuesta2
Así que aquí está mi solución ya que no pude encontrar ninguna manera de hacerlo:
Mientras me devolvían bloques de contenido, diga:
foo
bar
whatever
--
foo2
bar2
whatever
--
y así sucesivamente, utilicé el separador de grep y obtuve la siguiente línea así y luego las eliminé:
grep -B2 whatever myfile.txt | grep -v whatever | grep -A 1 -E '\-\-' | grep -v -E '\-\-'
Y eso solo produce:
foo
foo2