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 :

Boucle en Bash avec indentation


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut Boucle en Bash avec indentation
    Bonjour,

    Je souhaiterais ajouter un motif après une indentation numérique, cependant bash ne reconnaît pas tous à fait les numéros à deux chiffres ;

    fichier.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Model 1
    Model 2
    Model 3
    Model 10
    Model 11
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for fichier in dossier; do 
    	for i in {0..100}; do
    		sed -i "s/Model $i /Model $i-a /g" $fichier 
    	done	
    done
    après le code, il y a un problème pour la numérotation à deux chiffres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Model 1-a
    Model 2-a
    Model 3-a
    Model 1-a0
    Model 1-a1
    Il faudrait qu'il imprime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Model 1-a
    Model 2-a
    Model 3-a
    Model 10-a
    Model 11-a
    Est-ce que quelqu'un aurait une idée ??? Merci beaucoup

    Cordialement

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    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 277
    Points : 12 725
    Points
    12 725
    Par défaut
    oui,

    un truc du genre avec seulement sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/Model [0-9]*/&-a/' fichier
    le g est inutile selon ton exemple de fichier.
    Cordialement.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup ! Tout roule

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 687
    Points : 30 980
    Points
    30 980
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par judkil Voir le message
    Il faudrait qu'il imprime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Model 1-a
    Model 2-a
    Model 3-a
    Model 10-a
    Model 11-a
    Est-ce que quelqu'un aurait une idée ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for fichier in dossier; do 
    	sed -i -e "s/Model \([0-9]\{1,\}\)/Model \1-a/" "$fichier"
    done
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    la boucle est inutile : sed sait travailler sur plusieurs fichiers, en une seule instance.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle en bash avec creation de variable a la volé impossible a recuperer
    Par tazcox dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/05/2017, 08h56
  2. Script bash avec des variables mysql en boucle
    Par lorenzo8769 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 02/11/2015, 21h24
  3. probleme de récupération de variable en bash avec awk
    Par avogadro dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/12/2006, 01h31
  4. Plusieurs boucles en parallele avec Timers
    Par micniv dans le forum Access
    Réponses: 4
    Dernier message: 06/12/2006, 16h55
  5. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h08

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