IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

affichage par colonne


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut affichage par colonne
    Bonjour,

    J'ai plusieurs lignes dans un fichier
    totototot
    tata
    pppppp
    oiiiiiii

    je veux rajouter une variable suppleméntaire à la fin de chaque ligne de ce fichier, mais que les colonnes soit bien alignés, comme l'exemple suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    totototot     N
    tata          N
    pppppp        P
    oiiiiiii      N
    comment faire, je dirais bien la commande printf !!!

  2. #2
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    Je testerais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "s/ /\\t/g" fichier

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    ça ne semble pas correspondre à mon besoin.

    si par exemple :
    ColA Colb
    toto O
    tatat N

    je veux que ma colonne B soit toujours aligné, meme si ma colonne A varie. Ma colonne A peut avoir un maximum de 10 caractéres.

    exemple

    totoooo______O
    tata_________N
    titi__________O

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Je pense que tu n'as pas d'autre choix que de compter le nombre de caractere dans une ligne (commande wc) , puis d'ajouter le complement, par exemple avec sed ou un truc du genre.

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    C'est quand même plus simple d'utiliser printf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while read line; do printf "%-20s%s\n" $line N; done < ton_fichier

  6. #6
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Oui mais, oui mais...

    On ne connait pas la taille du premier champ, alors 20 caractères c'est peut-être trop, ou trop peu. Je propose donc quelque chose qui s'adapte, quelle que soit la taille max que prend le premier champ. Pour simplifier, je suppose que les deux champs sont déjà présents dans le fichier fichier_entree:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto 1
    qwerty 2
    abcdefghij 3
    12345678901234567890 4
    z 5
    Pour séparer les deux champs, il y a un ou plusieurs espaces ou tab, peu importe.
    Et voici le code, en deux commandes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    taille=$(awk '{l=length($1); t=l>t?l:t} END {print t}' fichier_entree)
    awk -v t=$taille '{f="%s%" t+3-length($1) "s\n"; printf f, $1, $2}' fichier_entree > fichier_sortie
    Explications:

    • La première commande recherche dans le fichier, sur la première colonne, le plus long mot.
    • La seconde commande crée une variable f (format) pour formatter chaque ligne du fichier, notamment en calculant le nombre d'espaces entre les deux champs: taille_max + 3 - longueur_courante.

    Et on obtient, dans fichier_sortie, ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto                  1
    qwerty                2
    abcdefghij            3
    12345678901234567890  4
    z                     5

Discussions similaires

  1. Affichage "grouper par colonne"
    Par gracouille dans le forum SharePoint
    Réponses: 0
    Dernier message: 27/05/2008, 16h30
  2. problème affichage par colonne (listview)
    Par skysee dans le forum C#
    Réponses: 2
    Dernier message: 19/09/2007, 12h32
  3. affichage de colonnes par la jonture des tables
    Par pinokio dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/04/2007, 08h27
  4. Affichage par colonne
    Par Louison dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/02/2007, 16h34
  5. affichage colonne par colonne
    Par tjoce dans le forum Langage
    Réponses: 1
    Dernier message: 02/11/2005, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo