# Read logs with command tail -f file with strings color?

**URL:** <https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931>\
**Category:** Support Debian\
**Created:** [Janvier 5, 2022, 3:10 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931 "2022-01-05T15:10:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 5, 2022, 3:10 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/1 "2022-01-05T15:10:05Z")

</div>

Bonjour à toutes et à tous !

Bonne Année 🥳 - Que tous vos vœux de bonheur se réalisent ❤

J’ai une question :

**Comment-faire pour afficher de la couleur sur un mot** ou plusieurs et cela **en utilisant la commande (`tail -f`)** de lecture de fin de fichier en temps réel et pas seulement les lignes qui contiennent le mot ?

`tail -f /var/log/syslog`

La commande ci-dessous me retourne bien de la couleur sur la string «&nbsp;error&nbsp;»- mais je souhaite afficher toute la sortie de `syslog` et pas seulement les lignes qui contiennent le mot error.

`tail -f /var/log/syslog | grep error`

Avez-vous une idée ?

Merci.

Romain

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 5, 2022, 3:44 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/2 "2022-01-05T15:44:37Z")

</div>

Bonjour

> [@anon36725218](#):
>
> … **Comment-faire pour afficher de la couleur sur un mot** ou plusieurs et cela **en utilisant la commande ( `tail -f` )** …

En utilisant un _pipe_ et la commande `sed` avec des [**séquences d’échappement**](https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences) :

Par exemple :

```plaintext
tail -f /var/log/syslog | sed -e "s/CRON/"$'\033[1;5;41m'"&"$'\033[m'"/" -e "s#/dev/sd.#"$'\033[1;92;41m'"&"$'\033[m'"#"

```

Difficile de te créer un exemple sans savoir quels mots tu faire apparaître en couleurs,  
alors j’ai choisi les chaînes de caractères suivantes :  
`CRON`  
et tous les `/dev/sd..`  
c’est à dire : `/dev/sda1``/dev/sdb5``/dev/sdf9` etc.

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 5, 2022, 4:02 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/3 "2022-01-05T16:02:57Z")

</div>

Merci @anon29980398 j’étais sur cette page justement [BASH Shell Change The Color of Shell Prompt on Linux or UNIX](https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/) !

J’essaie 🙂

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 5, 2022, 4:05 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/4 "2022-01-05T16:05:50Z")

</div>

Parfait ! Merci @anon29980398 t’es trop fort !

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 5, 2022, 4:41 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/5 "2022-01-05T16:41:05Z")

</div>

c’est pour mon fichier zimbra.log / mail.log - il n’y a pas d’erreur dans mon syslog 🤣 😊 😇

Bonne soirée 🙂

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 5, 2022, 5:22 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/6 "2022-01-05T17:22:29Z")

</div>

Bonne soirée à toi.

De fait, comme son nom l’indique : **sed** ( **S** tream **ED** itor)  
était tout indiqué pour ce que tu cherchais à faire.

Dans les premières lignes du **man** uel de la commande **sed** ,  
on peut lire :

> ```plaintext
> NAME
> sed - stream editor for filtering and transforming text
> 
> ```

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 6, 2022, 12:07 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/7 "2022-01-06T12:07:42Z")

</div>

C’est peut être parce que je n’ai lu que [Les commandes fondamentales de Linux](http://howto.zw3b.fr/linux/les-commandes-fondamentales-de-linux) 😉

Merci @anon29980398 ! Bonne journée. Bon courage !

Romain - ([My blog ZW3B](https://www.zw3b.blog)) 😃

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 12, 2022, 1:44 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/8 "2022-01-12T13:44:35Z")

</div>

J’ajoute ce lien : [How to have tail -f show colored output](https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output) pour informations supplémentaire.

Bonne journée.

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Janvier 12, 2022, 10:55 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/9 "2022-01-12T22:55:48Z")

</div>

super utile, trop cool 🙂 🙂

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Janvier 21, 2022, 1:03 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/10 "2022-01-21T13:03:21Z")

</div>

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 «&nbsp;TODO&nbsp;» 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…

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 21, 2022, 1:24 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/11 "2022-01-21T13:24:22Z")

</div>

> [@Sputnik93](#):
>
> … globalement dans le shell ? …

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.

> [@Sputnik93](#):
>
> la chaîne « TODO » est par exemple affichée sur un fond jaune si elle est dans un commentaire

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 :

```plaintext
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`

```plaintext
cat monFichier.txt | sed "s/^# *TODO *:/"$'\033[30;103m'"&"$'\033[m'"/"

```

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Janvier 21, 2022, 1:33 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/12 "2022-01-21T13:33:23Z")

</div>

Oui j’aurais sans doute dû préciser: «&nbsp;sans faire appel à un autre processus&nbsp;». 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…

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 21, 2022, 1:49 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/13 "2022-01-21T13:49:43Z")

</div>

@anon29980398 - 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 :  
[https://unix.stackexchange.com/a/71524/508858](https://unix.stackexchange.com/a/71524/508858)

Bonne journée.

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Janvier 21, 2022, 1:53 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/14 "2022-01-21T13:53:48Z")

</div>

> [@anon36725218](#):
>
> @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 ^^

Il en a donné un un peu plus haut 😃[https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences](https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences)

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 21, 2022, 1:55 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/15 "2022-01-21T13:55:43Z")

</div>

> [@Sputnik93](#):
>
> Il en a donné un un peu plus haut 😃 [terminal - List of ANSI color escape sequences - Stack Overflow](https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences)

Ah oui Merci @Sputnik93 - Aveugle je suis ! Bonne journée !

Je cherchais cette explication :

> echo -e «&nbsp;\033[31;1;4mHello\033[0m&nbsp;»  
> 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 @anon29980398 !!! Merci beaucoup ! Merci re @Sputnik93 😉 Merci à [Andrew Marshall](https://stackoverflow.com/users/211563/andrew-marshall) aussi 🙂 🙂

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 21, 2022, 2:44 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/16 "2022-01-21T14:44:58Z")

</div>

> [@Sputnik93](#):
>
> … sans faire appel à un autre processus …

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 «&nbsp;commentaire&nbsp;» 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.

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Janvier 21, 2022, 2:51 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/17 "2022-01-21T14:51:13Z")

</div>

> [@anon29980398](#):
>
> il ne fait que lire les commandes entrées et afficher les retours des commandes lancées.  
> Éventuellement, le shell affichera des messages d’erreurs

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)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 21, 2022, 3:04 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/18 "2022-01-21T15:04:36Z")

</div>

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. 🙂

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Janvier 21, 2022, 3:06 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/19 "2022-01-21T15:06:55Z")

</div>

Bien sûr, bon courage et on croise les doigts pour le fils 🤞

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Janvier 21, 2022, 3:23 UTC](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931/20 "2022-01-21T15:23:53Z")

</div>

> [@anon36725218](#):
>
> Super lien @MicP !!! Merci beaucoup ! Merci re @Sputnik93 😉 Merci à [Andrew Marshall](https://stackoverflow.com/users/211563/andrew-marshall) aussi 🙂 🙂

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"`

1. Pour identifier les «&nbsp; **error** &nbsp;» en **background rouge**
2. Pour identifier les «&nbsp; **status=deferred** &nbsp;» en **font color rouge**
3. Pour identifier les «&nbsp; **status=sent** &nbsp;» en **font color verte**
4. Pour identifier mes «&nbsp; **sites Web** &nbsp;» en **font color blanche** # style tous ces sites ^^ haha

J’ai ajouté l’option «&nbsp;`g`&nbsp;» en fin pour afficher la couleur plusieurs fois par ligne.

Merci !

[Page suivante](https://www.debian-fr.org/t/read-logs-with-command-tail-f-file-with-strings-color/85931.md?page=2)
