Forum Linux.débutant Terminal: surbrillance d'occurrences multiples d'un texte

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
2
24
avr.
2019

Bonjour à tous,

Je suis confronté à un « problème » agaçant :

Dans un terminal défilent des logs envoyés par mon_serveur exclusivement sur STDOUT.

Grâce à une astuce grappillée je ne sais plus où, je peux facilement mettre systématiquement en valeur un fragment de texte via un truc du genre :

mon_serveur start | sed -e "s/${2}/${rouge}${2}${pas_rouge}/ig"

(la chaîne de caractères étant fournie en second paramètre du script dont est extrait la ligne ci-dessus)

C'est très utile pour suivre le déroulement du traitement (par exemple en mettant en valeur le nom d'un paramètre affiché plusieurs fois dans les logs).

Ceci dit, une fois cette première étape faite, j'ai envie de repérer, dans mon terminal, toutes les occurrences d'un texte différent (par exemple la valeur du paramètre dont le nom est coloré en rouge).

La seule solution trouvée jusque maintenant est d'utiliser la fonction de recherche dans le terminal (Gnome-terminal ou xfce4-terminal).

Mais je ne peux alors voir en surbrillance qu'une seule instance à la fois (et naviguer de l'une à l'autre) de mon texte recherché :-(

Connaissez vous un moyen de mettre en surbrillance en une fois toutes les occurrences d'un fragment de texte dans une fenêtre de terminal ?

  • # grep --color=auto motif

    Posté par  . Évalué à 2.

    execute ta commande
    redirige stdout vers un fichier (c'est plus facile pour l'historique)

    puis

    grep --color=auto motif_recherché fichier_contenant_le_log

    sinon pour l'avoir en live

    monserveur start | grep --color=auto motif_cherché
    • [^] # Re: grep --color=auto motif

      Posté par  (Mastodon) . Évalué à 1.

      Merci NeoX pour ta proposition, mais cela ne correspond malheureusement pas tout à fait.

      1. Ça m'arrangerait de pouvoir chercher dans le buffer pendant que le serveur tourne, avec la coloration etc.
      2. le « ... | grep ... » fait moins bien, apparemment, que l'astuce avec mon sed. Mais surtout, je ne peux avec cette solution n'avoir en couleur qu'un seul motif… et je ne peux pas rechercher un motif différent sans relancer le serveur :-(

      J'ai aussi fait l'essai suivant (plein d'espoir) :

      monserveur start | less -R +F

      En espérant pouvoir en plus faire une recherche via la fonction offerte par less.

      Malheureusement, l'option +F empêche d'accéder à la fonction de recherche, apparemment…

  • # GNU screen

    Posté par  . Évalué à 3.

    En utilisant screen, une recherche dans le tampon va te highlighter toutes les occurences.

    En gros:

    1. Tu lances screen via screen puis tu lances ton serveur.
    2. Une fois que t'as suffisament de chose dans le terminal tu tapes ctrl-a esc puis ? (recherche arrière, ala vim).
    3. Tu tapes le mot recherché puis entrée.

    En plus tu as d'autres avantages:
    * Screen travaille sur tout le buffer, y compris les pages de terminal qui ne sont plus visibles.
    * Screen se détache et se rattache à volonté, donc tu peux rentrer à ta maison en coupan ton ssh sans pour autant devoir tuer ton serveur. Et une fois à la maison,hop, tu rattaches.

    • [^] # Re: GNU screen

      Posté par  (Mastodon) . Évalué à 1.

      Pour je ne sais quelle raison, screen ne met pas en surbrillance toutes les occurrences d'un motif recherché (peut-être suffirait-il de régler un peu sa configuration ?).

      Par contre, ta suggestion m'a poussé à essayer tmux qui le fait parfaitement !

      ==> Ce sera la solution adoptée. Merci beaucoup.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.