¿Cómo encontrar palabras con parte del context que lo rodea usando grep?

Quiero usar grep para determinar cuántos caracteres se deben mostrar antes y después de lo que se está buscando. Por ejemplo, quiero filtrar 'ejemplo' de la línea 'esto es un ejemplo'. Al usar el grep example el resultado sería toda la línea que contiene la cadena, cuando lo que espero get es solo " un ejemplo ", dos caracteres antes de la palabra " ejemplo" .

hay opciones de grep

 grep -Eo '...example' test.txt 

dónde

  • -E utiliza expresión regular extendida
  • -o ouput solo cadena coincidente
  • ... significa cualquier personaje de 3
  • ambas opciones pueden fusionarse como -Eo
  • '' encierra patern para evitar la sustitución de shell

una nota sobre la sustitución de la concha

 grep -Eo ???example file 

podría no funcionar como se esperaba si un file como 123example está presente en el directory donde grep se está ejecutando.

Puede canalizar la salida de grep a sed. Aquí hay un ejemplo:

 grep example test.txt | sed 's/.*\(...example\)/\1/' 

Para get un tutorial sed, consulte http://www.grymoire.com/Unix/Sed.html