688 votes

Colorisée grep -- visualisation de l'intégralité du fichier à la mise en évidence

- Je trouver de l' greps' --color=always drapeau est incroyablement utile. Cependant, grep affiche seulement les lignes avec des allumettes (sauf si vous demandez des lignes de contexte). Étant donné que chaque ligne, il imprime a un match, la mise en évidence n'est pas d'ajouter autant de capacités qu'il le pourrait.

Je voudrais vraiment, cat un fichier et de voir l'ensemble du dossier avec le modèle correspond en surbrillance.

Est-il possible que je peux dire grep pour imprimer toutes les lignes en cours de lecture, indépendamment de savoir si il y a un match? Je sais que je pourrais écrire un script pour faire un grep sur chaque ligne d'un fichier, mais j'étais curieux de savoir si c'était possible avec la norme grep.

1072voto

Ryan Oberoi Points 3931
egrep --color 'pattern|$' file

ou si vous insistez sur l'utilisation de grep

grep --color -E 'pattern|$' file

132voto

Dennis Williamson Points 105818

Voici quelque chose le long de ces mêmes lignes. Les Chances sont, vous serez en utilisant moins de toute façon, essayez donc ceci:

less -p pattern file

Il va mettre en évidence le modèle et de passer à la première occurrence de celui-ci dans le fichier.

53voto

ephemient Points 87003

Je voudrais recommander ack-mieux que grep, une puissance de l'outil de recherche pour les programmeurs.

$ ack --couleur --passthru --pager="${PAGER:-moins -R}" fichiers de motifs de
$ ack --couleur --passthru fichiers de motifs de | moins -R
$ export ACK_PAGER_COLOR="${PAGER:-moins -R}"
$ ack --passthru fichiers de motifs de

Je l'aime parce qu'il est par défaut recherche récursive de répertoires (et n'est donc beaucoup plus intelligents qu' grep -r), supporte les expressions régulières de Perl (plutôt que de la POSIXish regex(3)), et a beaucoup plus de contexte d'affichage lors de la recherche de nombreux fichiers.

23voto

Fab Sa Points 1155

Vous pouvez également créer un alias. Ajouter cette fonction dans votre .bashrc (ou .bash_profile sur osx)

function grepe {
    grep --color -E "$1|$" $2
}

Vous pouvez maintenant utiliser l'alias comme ceci: "ifconfig | grepe inet" ou "grepe css index.html".

(PS: n'oubliez pas d' source ~/.bashrc pour recharger bashrc sur la session en cours)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X