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 :

Rajout du caractére "000000" sur chaque fin de ligne de mon fichier, limité à 1500


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut Rajout du caractére "000000" sur chaque fin de ligne de mon fichier, limité à 1500
    Bonjour,

    J'ai un fichier test contenant plusieurs lignes.
    zone;4ppp;pppp;;p;;;;
    zone8;h;;hhhh;;;;hhhh;
    cumul;ftgg;trttt;tyyy;yyy;ppp;pppp;;;;kkkkk;;

    A la fin de chaque ligne, je souhaiterait rajouter la valeur 0, plusieurs fois de suite, jusqu'à atteindre 50 caractères par ligne

    exemple :
    zone;4ppp;pppp;;p;;;;000000000000000000000000000
    zone8;h;;hhhh;;;;hhhh;00000000000000000000000000
    cumul;ftgg;trttt;tyyy;yyy;ppp;pppp;;;;kkkkk;;00000000

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    Bonjour,

    tu as quelque chose à proposer ?
    sur quoi tu bloques ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    • Soit tu utilises sed, et tu fais un ajout de 0 jusqu'à repérer une chaîne de 50 caractères. (saut conditionnel)
    • Soit tu utilises awk, et tu affectes 0 à $i, dans une boucle qui va, pour i, de NF+1 à 50.


    Elle est pas belle la vie ?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    il y a "plus simple", et plus rapide peut-être, en shell et avec printf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf -v zeros '0%.s' $(seq $((${#ligne}+1)) 50)
    echo "$ligne$zeros"
    modulo quelques tests...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut
    comment je peux faire cela avec un cat test | .....

    Merci pour votre aide

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Pour le fun, en pure built-in bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while read a ; do [[ 50 -gt ${#a} ]] && printf "%s%0$((50-${#a}))i\n" "$a" || printf "%s\n" "$a" ; done <fichier

Discussions similaires

  1. rajouter une virgule à chaque fin de ligne d'un .txt
    Par mozzlo dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/12/2009, 13h06
  2. Réponses: 22
    Dernier message: 10/02/2007, 12h02

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