Lorsque j'utilise, par exemple, cat file.txt | grep --color=tty "pattern"
le motif que je recherche est mis en surbrillance. Quand je veux un peu plus de contexte autour de chaque coup, grep a les -A
, -B
et les -C
paramètres.
Cependant, je veux afficher le fichier entier (ou n'importe quelle sortie de commande) et mettre en évidence un certain modèle. Existe-t-il une telle commande ou outil de mise en évidence?
linux
command-line
DerMike
la source
la source
Réponses:
Il y avait une réponse sur unix.stackexchange.com qui avait cette astuce intéressante :
ou
qui correspond à votre modèle ou à la fin de la ligne sur chaque ligne. Seul le motif est mis en évidence.
la source
GREP_OPTIONS='--color'
à votre~/.bashrc
(ou modifiez le paramètre pour l'inclure--color
). Vous devrez démarrer un nouveau terminal ou exécuter cette affectation sur la ligne de commande du terminal actuel pour qu'il prenne effet.J'aime ack .
C'est comme grep, mais en mieux. Il est mis en surbrillance par défaut, et avec l'
--passthru
option, il montre tout le fichier (ou l'entrée standard) au lieu des seules lignes correspondantes.la source
tail
, vous devez également utiliser l'--filter
option. Par exemple:tail -f myLogFile | ack --filter --passthru pattern
Je recommande également l'utilisation de
less
(ou tel), mais je veux vous montrer une solution plus didactique. Une fois que vous avez défini cette fonction:Vous pouvez l'utiliser de cette façon:
Remarque: Cette version est sensible à la casse, pour changer celle qui vient s'ajouter
i
aprèsg
dans l'sed
expression.la source
tput
lieu de coder en dur les valeurs. De cette façon, vous évitez également d'utiliserecho -e
, ce qui peut avoir d'autres effets.prog | highlight "pattern"
ouhighlight "pattern" file
:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
compétences n'existent pratiquement pas. Comment devrais-je changer cela afin de faire correspondre le modèle sensible à la casse. Quoi qu'il en soit, j'ajouterai celui-ci à mes fonctions bash_include. Merci beaucoup.Passer
-C
àgrep
une valeur suffisamment élevée le fera.la source
less
met en évidence le motif, doncou
puis en moins
/
pour rechercher un motif qui sera mis en évidence.Note latérale:
Vous pouvez améliorer votre commande, par exemple
définir un alias
alias grep="grep --color=tty"
et l'utiliser comme ça:la source
grep
(zgrep, bzgrep, bzfgrep, etc.) Donc, si vous voulez que toutes les formes de grep se comportent de manière cohérente, vous devez définir un alias pour chaque forme de grep. La nouvelle réponse de @ Casual ci-dessus ne sera pas pour quelque chose commebzgrep pattern /var/log/messages.?.gz
, qui est un exemple où la mise en évidence des couleurs est TRÈS utile.Il y a un bel outil supercat , qui sert exactement ce but. Il peut à la fois coloriser la sortie de votre console et produire un html "surligné" à partir de votre entrée.
la source
/etc/supercat
sur Ubuntu), qui définissent les règles de coloration, ce sont essentiellement des paires couleur / expression rationnelle (avec quelques règles supplémentaires); la page de manuel est également courte et agréable.spcrc
fichier de syntaxe vim sur vim.org/scripts/script.php?script_id=2676