A menudo uso grep para encontrar archivos que tengan una determinada entrada como esta:
grep -R 'MyClassName'
Lo bueno es que devuelve los archivos, su contenido y marca la cadena encontrada en rojo. Lo malo es que también tengo archivos enormes donde todo el texto está escrito en una sola línea grande. Ahora grep genera demasiados resultados al encontrar texto dentro de esos archivos grandes. ¿Hay alguna forma de limitar la salida a, por ejemplo, 5 palabras a la izquierda y a la derecha? ¿O tal vez limite la salida a 30 letras a la izquierda y a la derecha?
cut
, ya que solo se divide por delimitador o por recuento de caracteres. Aunque cuando encuentro una línea con MyClassName
ella, puede estar en cualquier parte de la línea y no siempre en la misma posición. Además, puede haber una variación de caracteres en la parte delantera y trasera de la misma, lo que rompe la posibilidad de dividir por delimitador.
MyClassName
se ha encontrado una línea positiva con , quiero obtener como resultado el nombre del archivo y los caracteres x a la izquierda y a la derecha. x es cualquier número que proporcione, por ejemplo 30. El resto del contenido del archivo se ignorará. Esto es para obtener un contexto para los archivos coincidentes y limitar la sobrecarga.
cut
si hay tres archivos con la siguiente entrada: oiadfaosuoianavMyClassNameionaernaldfajd
y /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
y public class MyClassName { public static void main(String[] args) { } }
?
cut