Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1791 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Bash] Formatage de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Bash] Formatage de fichier

n°1432725
hellohoora​y
Posté le 15-04-2019 à 12:24:08  profilanswer
 

Salut,
 
J'ai besoin d'experts bash sed awk, j'essaie de rediriger la sortie de la commande yum update dans un fichier (car j'ai besoin de parser ensuite ce fichier) :  
 
Donc je fais ça :

Code :
  1. yum update --assume-no > /tmp/yum-update.txt


 
Le problème c'est que la redirection vers un fichier ne conserve pas le même formatage (espaces, tabs..) que lorsque qu'on l'exécute directement à l'écran.
Par exemple ici le paquet yum s'affiche sur une seule ligne alors que le paquet suivant "yum-plugin-fastestmirror" s'affiche sur deux lignes (du fait qu'il comporte un nom un peu long j'imagine) :

Code :
  1. yum            noarch 3.2.29-81.el6.centos.0.1  updates 1.0 M
  2. yum-plugin-fastestmirror
  3.                 noarch 1.1.30-42.el6_10          updates  33 k


 
 
Alors que quand je l'exécute sans redirection (affichage dans le terminal donc) :

Code :
  1. yum update --assume-no


 
L'affichage est bon :

Code :
  1. yum                                noarch               3.2.29-81.el6.centos.0.1              updates              1.0 M
  2. yum-plugin-fastestmirror           noarch               1.1.30-42.el6_10                      updates              33 k


 
Du coup je cherche une solution pour qu'il n'y ait pas de saut de ligne lorsqu'un paquet possède un nom long (comme yum-plugin-fastestmirror).
D'avance merci :)

mood
Publicité
Posté le 15-04-2019 à 12:24:08  profilanswer
 

n°1432735
kajoux
Posté le 15-04-2019 à 15:26:14  profilanswer
 

Bizarre ton truc, ça viendrait pas de l'éditeur avec lequel tu ouvres /tmp/yum-update.txt ? Parce que la redirection ne reformate rien, elle redirige…

n°1432736
Fork Bomb
Obsédé textuel
Posté le 15-04-2019 à 15:34:39  profilanswer
 

+1
Affiche les numéros de ligne dans ton éditeur.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1432738
hellohoora​y
Posté le 15-04-2019 à 15:51:28  profilanswer
 

J'utilise vim. Mais que j'utilise vim ou que je fasse un cat sur le fichier je me retrouve avec exactement le même affichage sur deux lignes.  
Et en affichant les n° de lignes sous vim, il m'indique bien qu'il y a deux lignes  :sweat:  
 
C'est pas plutôt une histoire de terminal ? Genre quand j'exécute la commande sans redirection, il est capable de calculer la largeur de mon terminal et d'afficher les lignes en utilisant toute la largeur, alors que quand je redirige la commande il a l'air de voir ça différemment   :??:  
Car quand je regarde le résultat dans le fichier, chaque ligne fait exactement la largeur d'un terminal basique (terminal pas en plein écran largeur de 80 colonnes...)

n°1432739
rat de com​bat
attention rongeur méchant!
Posté le 15-04-2019 à 16:01:07  profilanswer
 

hellohooray a écrit :

C'est pas plutôt une histoire de terminal ? Genre quand j'exécute la commande sans redirection, il est capable de calculer la largeur de mon terminal et d'afficher les lignes en utilisant toute la largeur, alors que quand je redirige la commande il a l'air de voir ça différemment   :??:

J'avais pensé à un truc comme ça, mais j'ai aucune idée de comment le résoudre.
Ca sert à quelque chose de faire une redirection indirecte avec yum | cat > fichier ou d'afficher en même temps avec yum | tee > fichier ?


Message édité par rat de combat le 15-04-2019 à 16:01:24
n°1432741
kajoux
Posté le 15-04-2019 à 17:10:37  profilanswer
 

Ça ressemble à ce bug ce que tu dis : https://bugzilla.redhat.com/show_bug.cgi?id=584525
Il y a des propositions pour le formatage dans les commentaires si ça peut t'aider.
Il y a notamment un type qui dit : « When you redirect the output, yum cannot find out how big the terminal is ... so it defaults to 80 characters wide (the std.). », et qui a écrit un script python pour régler le problème…

n°1432742
kajoux
Posté le 15-04-2019 à 17:33:40  profilanswer
 

Tu as aussi un tr "\n" "#" | sed -e 's/# / /g' | tr "#" "\n" qui « remove the newlines that have whitespace after them » : ça règlerait donc le problème de ta deuxième ligne.
J'ai pas tout lu, mais ça fait débat ce truc. C'est vrai que c'est bizarre d'avoir un comportement qui change selon qu'on pipe ou redirige.
Mais c'est bien yum qui ne formate pas quand on redirige, et non la redirection qui reformate.  :o

n°1432878
hellohoora​y
Posté le 17-04-2019 à 17:04:02  profilanswer
 

Merci c'est exactement ce bug !  
 
J'ai pu me démerder avec les solutions qu'ils proposent  
 
Encore merci

n°1432882
kajoux
Posté le 17-04-2019 à 17:12:29  profilanswer
 

Ben ouais et il risque de durer longtemps ce bug, vu qu'ils le classent en NOTABUG…  [:kermodei:5]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Bash] Formatage de fichier

 

Sujets relatifs
Remplacer date dans nom fichiersystemd, fichier service qui change tout seul ???
[PYTHON2] Lire une liste dans un fichierPerte d'un fichier xls juste ouvert avec Libre Office
Accès 'denied' à un fichier dont je suis propriétaireecrasement de fichier sur une memoire flash .
[Bash] Questions utilisation cut paste et grep[Bash] Substitution d'une lettre
mettre automatiquement des droits à un fichier dans un répertoireMonter disque dur synology sur le bash windows 10
Plus de sujets relatifs à : [Bash] Formatage de fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR