4 votes

Obtenir des données supplémentaires autour de la correspondance à partir de grep

Je me demande comment améliorer mon grep à utiliser lorsqu'on est confronté à des dossiers comportant des lignes très longues. Imaginez quelque chose comme des fichiers JavaScript "emballés" qui n'ont qu'une seule ligne. Parfois, des fichiers de ce type produisent des résultats auxquels je ne m'attendais pas et inondent ma console (surtout lorsque j'utilise la fonction --recursive ).

Je suppose que j'aimerais quelque chose comme --context mais pour les mots/octets autour du match. Je pensais être intelligent en proposant cet usage :

$ grep -rino --color ".\{0,20\}something.\{0,20\}" *

Mais cela fait que les caractères autour de mon terme de recherche font partie de la correspondance.

1voto

diegogs Points 624

Je suppose qu'une solution était en quelque sorte devant moi. J'utilise maintenant cette fonction dans mon .bashrc :

grepAdjusted()
{
  grep -Erino ".{0,20}$1.{0,20}" ${@:2:$(($#-1))} | grep -i --color "$1"
}
alias g=grepAdjusted

Je l'ai gardé simple et adapté à mon cas d'utilisation le plus courant. Ce n'est pas une réponse parfaite à ma question initiale, mais elle fournit ce que je recherchais.

Output of grepAdjusted

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X