Parfait ! Merci @MicP t’es trop fort !
c’est pour mon fichier zimbra.log / mail.log - il n’y a pas d’erreur dans mon syslog
Bonne soirée
Bonne soirée à toi.
De fait, comme son nom l’indique : sed (Stream EDitor)
était tout indiqué pour ce que tu cherchais à faire.
Dans les premières lignes du manuel de la commande sed,
on peut lire :
NAME sed - stream editor for filtering and transforming text
C’est peut être parce que je n’ai lu que Les commandes fondamentales de Linux
Merci @MicP ! Bonne journée. Bon courage !
Romain - (My blog ZW3B)
J’ajoute ce lien : How to have tail -f show colored output pour informations supplémentaire.
Bonne journée.
super utile, trop cool
Je déterre le sujet pour une petite question:
est-ce que vous connaissez un moyen qui permet de faire ça (modifier la mise en forme d’une chaîne de caractères qui matche une expression) globalement dans le shell ?
Je sais que vim fait déjà ça (la chaîne « TODO » est par exemple affichée sur un fond jaune si elle est dans un commentaire), emacs aussi paraît-il, mais ce serait sympa si bash pouvait faire la même chose (ou un autre shell d’ailleurs)
J’ai cherché rapidement sur le ouèbe sans succès, alors si quelqu’un ici a une idée…
Il va falloir que tu précises mieux ce que tu voudrait faire,
parce que je ne comprends pas ce que tu as voulu dire.
C’est ce que fait la ligne de commande sed que j’ai proposée dans mon précédent message de ce fil de discussion, il faudra juste que tu précises dans quel contexte tu veux que ce motif apparaisse sur fond jaune.
Par exemple,
lance cette ligne de commandes :
echo "# TODO : bla bla etc." | sed "s/^# *TODO *:/"$'\033[30;103m'"&"$'\033[m'"/"
et si le texte à colorisé était contenu dans un fichier nommé monFichier.txt
cat monFichier.txt | sed "s/^# *TODO *:/"$'\033[30;103m'"&"$'\033[m'"/"
Oui j’aurais sans doute dû préciser: « sans faire appel à un autre processus ». En gros c’est plutôt une fonctionnalité du shell, que je cherche, quitte à changer de shell.
Comme printf interprète aussi les séquences d’échappement et que c’est une fonction built-in de bash, je me disais qu’il y avait peut-être moyen…
@MicP - tu n’aurais pas à tout hazard un lien - un mémo avec toutes les couleurs - pour sed et/ou perl et/ou PS1… ou un petit cours en français ^^
J’ai bien trouvé ce lien comme je vous le disais plus haut mais bon si vous avez d’autres infos persos :
Bonne journée.
Ah oui Merci @Sputnik93 - Aveugle je suis ! Bonne journée !
Je cherchais cette explication :
echo -e « \033[31;1;4mHello\033[0m »
où la première partie rend le texte rouge (31), gras (1), souligné (4) et la dernière partie efface tout cela (0).
Super lien @MicP !!! Merci beaucoup ! Merci re @Sputnik93 Merci à Andrew Marshall aussi
Le shell est l’interpréteur de commandes,
il ne fait que lire les commandes entrées, les interpréter, et éventuellement, il retournera des messages d’erreurs et ce que la commande lui demandera d’afficher.
Donc, je ne vois pas comment le shell pourrait afficher le mot TODO
et encore moins d’où il aurait pu extraire ce mot
et ce qui pourrait être considéré comme un « commentaire » par le shell.
C’est forcement un programme qui sera lancé par le shell,
et c’est ce programme qui ira lire un fichier dans lequel il y aurait le mot TODO pour l’afficher
Il reste à définir ce qu’est un commentaire.
Même chose pour la commande interne du bash printf
:
il faudra lui donner une chaîne de caractère à afficher,
et il faudra donc bien que cette chaîne de caractères provienne de quelque part.
Et comment considérer que cette chaîne est extraite d’une ligne commentée restera encore à définir, car la façon dont les lignes sont commentées dans un fichier, dépends du programme qui va utiliser ce fichier.
Tout à fait, c’est justement la mise en forme de cet affichage (sur la sortie standard ou l’erreur standard) que je me demandais s’il était possible de modifier, indépendamment de la commande qui veut écrire sur la sortie.
(pour le commentaire, c’était juste pour l’exemple dans vim)
Je reviendrais plus tard : un de mes fils a dû aller aux urgences
EDIT : OK, après radiographies, il n’a aucun OS de fracturé, j’ai eu peur de l’avoir mal configuré, et puis, j’avais quand même une sauvegarde, mais elle est un peu plus vielle, mais bon, on s’y attache avec le temps.
Bien sûr, bon courage et on croise les doigts pour le fils
Super les gars
Je me suis fait çà déjà - c’est très bien :
tail -f /var/log/mail.log /var/log/zimbra.log | sed -e "s/error/"$'\033[48;5;196m'"&"$'\033[m'"/g" | sed -e "s/status=deferred/"$'\033[38;5;196m'"&"$'\033[m'"/g" | sed -e "s/status=sent/"$'\033[38;5;41m'"&"$'\033[m'"/g" | sed -e "s/\(lab3w.fr\|lab3w.com\|zw3b.fr\|zw3b.net\|zw3b.tv\|zw3b.site\|zw3b.blog\|ipv01.net\|ipv10.net\)/"$'\033[38;5;43m'"&"$'\033[m'"/g"
- Pour identifier les « error » en background rouge
- Pour identifier les « status=deferred » en font color rouge
- Pour identifier les « status=sent » en font color verte
- Pour identifier mes « sites Web » en font color blanche # style tous ces sites ^^ haha
J’ai ajouté l’option « g
» en fin pour afficher la couleur plusieurs fois par ligne.
Merci !
// Hors sujet ------------------------------------
Pour infos j’analysai ma Postfix file d’attente ^^
Commande depuis Secure Private Business Email & Collaboration | Open Source | Zimbra :
Pour compter mes mails en file d’attente - par exemple
/opt/zimbra/common/sbin/postqueue -p | wc -l
/opt/zimbra/common/sbin/postqueue -p | grep '@' -B1 --no-group-separator | awk '{print $1}' | sed -e '/\(@\)/d' | sed -e '/\(host\|delivery\|connect\)/d' | sed -e '/^$/d' | wc -l
Et tous les SMTP server return codes que me retourne les serveurs SMTP des mails envoyés depuis mon serveur SMTP à des destinataires - pour supprimer les adresses mails inexistante/fermées :
Plus particulièrement pour les erreurs 5yz (Permanent Negative Completion Reply)
Par exemple - une erreur SMTP temporaire 4yz :
// La boîte aux lettres du destinataire a dépassé sa limite de stockage.
// Error : 422
/opt/zimbra/common/sbin/postqueue -p | grep 'said: 422' -B1 --no-group-separator | awk '{print $1}' | sed -e '/host/d' | wc -l
J’ai écris ce papier MTA - Messages d’erreur Mail il y quelques temps
// Hors sujet ------------------------------------
Merci encore !
C’est justement le but du pipe (|) de détourner (redirection de flux) la sortie de la commande lancée vers un filtre (ici, c’est la commande sed
qui fera office de filtre) pour qu’il intercepte le motif et l’entoure par les deux séquences d’échappement qui vont demander au terminal d’afficher le motif sur fond jaune puis de remettre ensuite l’affichage en mode normal
J’avais oublié CCZE qui est un outil de coloration de journaux robuste et modulaire, avec des greffons pour apm, exim, fetchmail, httpd, postfix, procmail, squid, syslog, ulogd, vsftpd, xferlog et plus.
tail -f /var/log/zimbra.log | ccze -C
Plus des sed
si on veut nous même identifier et mettre en couleur de mots spécifiques.
Bonne journée.
Romain