J'utilise souvent grep pour trouver des fichiers ayant une certaine entrée comme celle-ci:
grep -R 'MyClassName'
La bonne chose est qu'il retourne les fichiers, leur contenu et marque la chaîne trouvée en rouge. La mauvaise chose est que j'ai également des fichiers énormes où le texte entier est écrit sur une seule grande ligne. Maintenant, grep génère trop de résultats lors de la recherche de texte dans ces gros fichiers. Existe-t-il un moyen de limiter la sortie à par exemple 5 mots à gauche et à droite? Ou peut-être limiter la sortie à 30 lettres à gauche et à droite?
cut
, car il se divise uniquement par délimiteur ou par nombre de caractères. Mais quand je trouve une ligne avec MyClassName
elle, elle peut être n'importe où sur la ligne et pas toujours à la même position. De plus, il peut y avoir une variation de caractères à l'avant et à l'arrière de celui-ci, ce qui rompt la possibilité de diviser par délimiteur.
MyClassName
a été trouvée, je souhaite obtenir le nom du fichier et les caractères x à gauche et à droite. x est n'importe quel nombre que je fournis, par exemple 30. Le reste du contenu du fichier doit être ignoré. Il s'agit d'obtenir un contexte pour les fichiers correspondants et de limiter la surcharge.
cut
s'il y a trois fichiers avec l'entrée suivante: oiadfaosuoianavMyClassNameionaernaldfajd
et /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
et public class MyClassName { public static void main(String[] args) { } }
?
cut