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

Unix Discussion :

Ajout de x blancs en fin d'enregitrement


Sujet :

Unix

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Points : 88
    Points
    88
    Par défaut Ajout de x blancs en fin d'enregitrement
    Bonjour,

    Je suis confronté à un problème pour transformer mon fichier initialement de longueur variable en un fichier de longueur fixe en ajoutant x blancs.

    Par exemple en entrée :
    AAAAAAAAAAAA
    BBBBBBBBBBBBBBBBBBBBBB
    CCCCCCCCCCCCCCCCCCCCCCCCC

    En sortie, je dois avoir ceci
    AAAAAAAAAAAA______________
    BBBBBBBBBBBBBBBBBBBBBB______
    CCCCCCCCCCCCCCCCCCCCCCCCC

    Autrement dit, la première et la deuxième lignes sont alignées par rapport à la longueur de la troisième ligne en ajoutant x blancs (_ signifie blanc pour l'illustration).

    Je sais que la commande sed suivante permet d'ajouter un espace mais comment la rendre paramétrable :

    sed 's/$/ /g' -> insère un seul blanc en fin de ligne
    sed 's/$/ /g' -> insère deux blancs en fin de ligne

    Comment réécrire cette expression sed pour insérer x blancs ?
    Charge à moi ensuite de calculer ce x. Dans mon exemple, x vaut successivement 14 (1er enregistrement) et 6 (2ème enregistrement).

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    En ksh ou bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    width=40
    spaces=$(for i in $(seq 0 $width) ; do printf " " ; done)
    sed 's/$/'"$spaces"'/' $1 | cut -c 0-$width
    ɹǝsn *sıɹɐlos*

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    En ksh ou bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    width=40
    spaces=$(for i in $(seq 0 $width) ; do printf " " ; done)
    sed 's/$/'"$spaces"'/' $1 | cut -c 0-$width
    Merci pour la réponse. J'ai réussi à faire ceci :

    # Récupérer l'enregistrement le plus long
    NBRE_CARAC_MAX=`wc -L ${NOM_FICHIER_A_TRAITE} | cut -d " " -f1`

    cat ${NOM_FICHIER_A_TRAITE} | awk '{printf("%-'${NBRE_CARAC_MAX}'s\n",$0)}' > ${NOM_FICHIER_A_TRAITE}

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    C'est extrèmement risqué, tu risques de perdre ton fichier de données puisqu'il est à la fois source et destination.

    Voici plus simple et plus sûr:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    awk '{printf("%-'$(echo $(wc -L < file))'s\n",$0)}' file > file.tmp && \
    mv file.tmp file
    ɹǝsn *sıɹɐlos*

Discussions similaires

  1. Bcp out d'une table sans les blancs de fin de chaine
    Par armor92 dans le forum Outils
    Réponses: 3
    Dernier message: 07/12/2006, 13h41
  2. Supprimer les caractères blancs en fin de ligne
    Par st20085 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/09/2006, 22h51
  3. [VBA-E] ajout de ligne automatique en fin de tableau
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2006, 21h13
  4. Ajouter un .0 a la fin des DATETIME
    Par kedare dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2006, 16h12
  5. Suppression des blancs en fin de chaine
    Par Spyco dans le forum C
    Réponses: 4
    Dernier message: 22/12/2005, 15h13

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