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 :

[Débutant] - Incrémenter une variable et copier un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut [Débutant] - Incrémenter une variable et copier un fichier
    Bonjour,
    Voila, je suis débutant et j'aimerai effectuer quelques modifications sur un fichier.
    Tout d'abord, dans mon fichier, j'ai à plusieurs reprises l'expression : <branche>. Je souhaiterais ajouter un nombre que j'incrémenterai après le mot branche. Ca donnerai donc :
    <branche0> puis <branche1> , <branche2> , etc...
    Je pense que c'est possible avec la commande sed, en faisant :
    sed 's/<branche>/<branche0>/' fichier.txt
    Mais je ne sais pas comment incrémenter le nombre. J'ai trouvé quelques exemples pour incrémenter une variable, mais j'ai rien compris lol.

    Et j'ai aussi une deuxième chose à demander. En fait dans mon fichier, j'ai plusieurs fois le mot <id>. Et j'aimerais supprimer tout ce qui est entre l'expression <id>, et le copier dans un nouveau fichier dont le nom est est placé après une balise nomfichier=.
    Voici un exemple de fichier :

    <id>
    nomfichier=toto
    blabla
    blabla

    blibli

    <id>
    nomfichier=tata
    blabla
    blabla

    blibli

    <id>
    nomfichier=titi
    blabla
    blabla

    blibli


    Il faudrait donc que le script coupe tout le contenu à partir de <id> (compris) jusqu'au prochain et le mette dans un fichier dont le nom et ce qu'il y a apres nomfichier= qui est situé après <id>.


    Voila, bon je ne sais pas si c'est compliqué, pour moi ca l'est en tout cas comme je n'ai jamais fait beaucoup de script lol, et j'espere que quelqu'un pourra m'aider ^^.
    En tout cas, merci deja si vous avez pris la peine de tout lire lol. ++

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    bonjour,

    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Tant q'on lit une ligne
    Si $ligne commence par "<id>"
    alors ++n
    finSi
    echo "$line" > fichier_$n
    finTant < fichier_source
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut
    Bonjour,
    Merci pour ta reponse. Et j'ai réussi à trouver une sollution en effectuant comme tu l'as dit une boucle "while read line" mais je pense que c'est possible et plus rapide avec sed ou grep (je ne connais pas bien les différences entre les 2 lol), mais bon je ne m'y connais pas assez pour ça.
    En tout cas merci quand meme,

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    pour les balizes branch tu peux utiliser le meme principe

    a adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    $ cat -n z | while read ligne                          
    > do                                                   
    > echo $ligne | sed "s/\([0-9]*\)\ \(<branch\)>/\2\1>/;s/^[0-9]*\ //" >> resultat
    > done
    $ cat resultat
    <branch1>
    <branch2>
    <branch3>
    <branch4>
    <branch5>
    <branch6>
    <branch7>
    <branch8>
    <branch9>
    <branch10>
    <branch11>
    <branch12>
    <branch13>
    <branch14>
    <branch15>
    <branch16>
    <branch17>
    <branch18>
    toto
    <branch20>
    <branch21>
    <branch22>
    <branch23>
    <branch24>
    <branch25>
    <branch26>
    la difference entre sed et grep ?
    grep = chercheur de chaines
    sed = langage d'edition de fichier par script (idem que vi -c) la difference avec vi -c "script" fichier c'est que sed est standardisé, alors que vi depend de la version vi/vim/gvi etc...

Discussions similaires

  1. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  2. Enregistrement d'une variable dynamique dans un fichier
    Par zarbydigital dans le forum Langage
    Réponses: 13
    Dernier message: 24/12/2005, 21h28
  3. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  4. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

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