J'ai une commande dont je voudrais filtrer une certaine ligne :
$ sudo dnf history | head
ID | Ligne de commande | Date et heure | Action(s) | Modifié
-------------------------------------------------------------------------------
1024 | install gammaray | 2020-04-11 01:18 | Install | 7
1023 | update | 2020-04-10 19:03 | Upgrade | 51
1022 | update --refresh | 2020-04-09 18:35 | Upgrade | 1
1021 | update | 2020-04-08 19:19 | Upgrade | 17 EE
1020 | -y install https://dl.go | 2020-04-08 15:17 | Install | 6 EE
1019 | -y install --disablerepo | 2020-04-07 19:09 | Install | 1
1018 | update | 2020-04-07 19:05 | E, I, U | 13
1017 | autoremove btrfs-progs | 2020-04-07 19:04 | Removed | 2
La ligne qui m'intéresse est la troisième, celle qui suit les tirets. Alors je fais :
$ sudo dnf history | head | grep -A1 -E ^- | grep -v -E^-
-------------------------------------------------------------------------------
1024 | install gammaray | 2020-04-11 01:18 | Install | 7
J'essaie autre chose :
$ sudo dnf history | head | grep -A1 -E ^- | sed '/^-/d'
-------------------------------------------------------------------------------
1024 | install gammaray | 2020-04-11 01:18 | Install | 7
Ce que je ne comprends pas c'est que la sortie est la même que :
$ sudo dnf history | head | grep -A1 -E ^-
-------------------------------------------------------------------------------
1024 | install gammaray | 2020-04-11 01:18 | Install | 7
Le deuxième grep
ou sed
ne prend rien. Une idée ?
P.-S. : j'ai résolu le problème comme ça :
$ sudo dnf history | sed '3q;d'
1024 | install gammaray | 2020-04-11 01:18 | Install | 7
plus simple et efficace !
# Dites 33
Posté par beaulieu1 . Évalué à 4. Dernière modification le 11 avril 2020 à 19:20.
Il est possible que grep sorte des codes d'échappement ANSI même quand ça passe dans un tuyau. Ajoute
| tr '\033' X
à ta commande pour faire ressortir les codes.Si c'est ça, regarde peut-être du côté de l'option --colors de grep et la variable GREP_COLOR ?
[^] # Re: Dites 33
Posté par deuzene (site web personnel) . Évalué à 3.
Je confirme :
Merci du tuyau ;)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: Dites 33
Posté par Cyril Brulebois (site web personnel) . Évalué à 1.
Sinon,
--color=never
dansdnf
, histoire d'éviter complètement le problème, plutôt que d'avoir à le contourner ?Debian Consultant @ DEBAMAX
[^] # Re: Dites 33
Posté par beaulieu1 . Évalué à 2.
Je ne pense pas que le problème vienne de dnf, sinon le premier grep aurait été problématique aussi et ajouter --colors=never à grep, sauf erreur ma part, ne filtre pas les séquences d'échappement en entrée, donc ça n'aurait pas été vraiment contourner le problème ;-)
Par contre, il ferait mieux de contrôler ses alias. Un --colors=auto par défaut me semble une bonne idée si la couleur est souhaitée.
[^] # Re: Dites 33
Posté par deuzene (site web personnel) . Évalué à 2.
C'est exactement ce que j'ai fait. Merci du conseil.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: Dites 33
Posté par Anthony Jaguenaud . Évalué à 2.
Sinon, il y a le
--color=auto
qui met la couleur si stdout est un terminal et laisse sans couleur si se n’est pas un terminal, donc un pipe.# ça marche...
Posté par vmagnin (site web personnel) . Évalué à 1.
Chez moi ça fonctionne (j'ai copier/coller le tableau dans essai.txt) :
[^] # Re: ça marche...
Posté par deuzene (site web personnel) . Évalué à 2.
Ayé je sais pourquoi. Voir mon commentaire plus haut.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: ça marche...
Posté par Le Pnume . Évalué à 3.
et sans UUOC
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.