Modifiez le terminal STDOUT / STDERR pour changer la couleur de ligne en fonction d'un REGEX

0

Est-ce possible? Ce que j'aimerais réaliser, c’est lors de l’exécution de tests unitaires (Python) de mettre en surbrillance toute ligne correspondant au chemin du répertoire du projet en cours et de ne pas toucher aux autres sorties. Généralement, ce sont les lignes que je recherche, ce qui serait donc très utile pour le débogage. La correspondance des modèles devrait bien se passer, je ne sais pas comment modifier la sortie (des tests sont en cours avec Nose)

flux enflammé
la source

Réponses:

1

Vous pouvez diriger votre commande à travers grep -C10000 -P --color pattern(ou, dans votre cas particulier grep -C10000 -P --color ".*$PWD.*").

Par exemple:

cat /proc/cpuinfo | grep -C10000 -P --color 'GHz|MHz'
  • Oui, c'est une utilisation inutile du chat.
  • -C10000indique à grep d'imprimer 10000 lignes de contexte. Utilisez un nombre assez grand pour que grep imprime toutes les lignes
  • Utilisez |&si vous voulez aussi capturer STDERR
utilisateur49740
la source
1
Vous devrez peut-être faire correspondre "^.*$PWD/.*$"si vous souhaitez mettre en surbrillance toute la ligne contenant le répertoire en cours.
AFH
Oui, réponse mise à jour. Pas besoin de ^et $cependant. J'ai également supprimé la barre oblique finale.
user49740
2
Vous pouvez également utiliser egrep --color "$|^.*$PWD/.*$"pour grep toutes les lignes afin d'éviter l'utilisation de -C10000. De cette façon egrep, toutes les lignes seront mises en évidence et les correspondances trouvées seront mises en évidence. Mais comme un EOL ($) n'est pas 'visible', seul le motif de recherche réel est coloré.
Lambert