Costumo usar o grep para encontrar arquivos com uma certa entrada como esta:
grep -R 'MyClassName'
O bom é que ele retorna os arquivos, seu conteúdo e marca a string encontrada em vermelho. O ruim é que eu também tenho arquivos enormes, nos quais todo o texto é escrito em uma única linha grande. Agora, o grep gera muito quando encontra texto nesses arquivos grandes. Existe uma maneira de limitar a saída para, por exemplo, 5 palavras à esquerda e à direita? Ou talvez limite a saída para 30 letras à esquerda e à direita?
cut
, pois ele só se divide por delimitador ou por contagem de caracteres. Embora quando encontro uma linha com MyClassName
ela, ela esteja em qualquer lugar da linha e nem sempre na mesma posição. Além disso, pode haver uma variação de caracteres na frente e atrás, o que quebra a possibilidade de dividir por delimitador.
MyClassName
, quero obter como resultado o nome do arquivo e os caracteres x à esquerda e à direita. x é qualquer número que forneço, por exemplo 30. O restante do conteúdo do arquivo deve ser ignorado. Isso é para obter um contexto para os arquivos correspondentes e limitar a sobrecarga.
cut
se houvesse três arquivos com a seguinte entrada: oiadfaosuoianavMyClassNameionaernaldfajd
e /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
e public class MyClassName { public static void main(String[] args) { } }
?
cut