Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 10h38   #1
Invité régulier
 
Inscription : juin 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 64
Points : 7
Points : 7
Par défaut Transformer une longue colonne en deux colonnes

bonjour,

j'ai une liste comme celle ci :

Code :
1
2
3
4
5
6
 
blabla : zefz
zerzfrf : zerfzer
zerazre: zerzerz
zeerz: fsdgsdfg
[...]
et j'aimerai la transformer comme ceci :

Code :
1
2
3
4
 
blabla : zefz                 zerzfrf : zerfzer
zerazre: zerzerz              zeerz: fsdgsdfg
[...]
la couper en deux pour une meilleur lisibilité en faites

une idée ?
zorooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 11h42   #2
Membre émérite
 
Inscription : mai 2004
Messages : 708
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 708
Points : 853
Points : 853
Dans quel contexte? Cette liste est-elle générée en sortie d'un script? Est-elle contenue dans un fichier?

Dans ce dernier cas, une solution possible avec awk:
Code :
1
2
3
$ awk 'NR%2{a=$0} !(NR%2){printf "%-20s%s\n", a, $0;a=""}END{print a}' fichier
blabla : zefz       zerzfrf : zerfzer
zerazre: zerzerz    zeerz: fsdgsdfg
Sinon, tu peux reprendre le format du printf et l'inclure dans le script qui génère la liste en "bufférisant" une ligne sur deux.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org

Dernière modification par ripat ; 03/02/2010 à 11h59.
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 16h09   #3
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Une solution similaire à ripat:
Code :
awk '{printf "%-20s", $0; if (NR%2 == 0) print ""}' fichier
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 17h40   #4
Invité régulier
 
Inscription : juin 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 64
Points : 7
Points : 7
pas mal du tout ton truc par contre pas simple a comprendre

voila le contexte de la chose :

Code :
1
2
3
4
 
chkconfig --list | awk -F " " '{print $1 $5}' | sed 's/3:/ : /g' >> chkconfig.log
awk 'NR%2{a=$0} !(NR%2){printf "%-20s%s\n", a, $0;a=""}END{print a}' chkconfig.log >> rapport.log
rm -rf chkconfig.log
ça fait quelques bug d'affichage :

Code :
1
2
3
 
readahead_early : onreadahead_later : off
wpa_supplicant : offypbind : off
en gros ça bug qu'avec les services dont le nom est plus long
zorooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 20h22   #5
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
En gros, c'est quelque chose comme ceci, non?
Code :
chkconfig --list | awk '{printf "%-20s%-4s\t", $1, substr($5, 3); if (NR%2 == 0) print ""}'
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 09h57   #6
Invité régulier
 
Inscription : juin 2008
Messages : 64
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 64
Points : 7
Points : 7
la c'est la perfection au masculin merci
zorooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 10h45   #7
Membre habitué
 
Inscription : mai 2007
Messages : 138
Détails du profil
Informations personnelles :
Âge : 59

Informations forums :
Inscription : mai 2007
Messages : 138
Points : 108
Points : 108
par contre je vois ca:
Un peu dangereux....
noooop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 13h01   #8
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
J'ecris depuis le fin fond de l'Espagne, et je ne sais pas configurer le clavier avec lettres mortes dans Windows. Donc pas d'accents.

La destruction du fichier chkconfig.log n'est pas un mal en soit puisque c'est un fichier temporaire de travail. Par contre les options ne sont pas adaptees: rm chkconfig.log est suffisant. On ne sait pas que c'est un fichier temporaire, chkconfig.tmp serait un nom plus avise. Enfin, il n'y a carrement pas besoin de fichier temporaire puisque le traitement des donnees est effectue en une seule passe. Donc commande rm parfaitement inutile.
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web