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 :

Ecrire dans un fichier en bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Par défaut Ecrire dans un fichier en bash
    J'ai un problème:

    J'ai un fichier source MonScript.xba qui contient le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script:module>
     
    Sub Main
     
    End Sub
     
    </script:module>
    J'ai besoin d'ajouter dans ce fichier, avant la dernière ligne(</script:module>), le contenu(total) d'un autre fichier texte.

    Je ne sais comment faire!

    Je vous remercie par avance de l'aide que vous pourrez m'apporter.

    Vincent

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nombredelignes=$(wc -l toto.xba | cut -d" " -f1)
    head -$(expr $nombredelignes - 1) fichier.xba > fichierdestination
    cat fichieraacjouter >> fichierdestination
    tail -1 fichier.xba >> fichierdestination
    voila le principe pour bien comprendre la methode

    bien sur tu peux eviter tout ca en generant un sed ou un vi ou un awk.

    mais ca te donne les etapes a faire faire a une commande sed,vi ou awk.

    tu peux aussi bien sur utiliser tel que mais ca fait 1fichier intermediaire (fichierdestination) au lieu d'ecrire directement dans ton xba.

  3. #3
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Prodige2020
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script:module>
     
    Sub Main
     
    End Sub
     
    </script:module>

    Si la chaîne "End Sub" est présente une seule fois dans ton script,
    la solution suivante peut convenir
    http://pwet.fr/man/linux/commandes/sed

    Fichier inclusion.txt :

    sed '/^End Sub/r inclusion.txt' MonScript.xba > MonScript2.xba



    MonScript2.xba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script:module>
    
    Sub Main
    
    End Sub
    l1
    l2
    l3
    l4
    l5
    </script:module>

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Par défaut
    Merci à vous 2 pour vos réponses.
    frp31:je vais essayer ce soir la méthode proposée et je te dis quoi
    BlaireauOne:je n'ai qu'un end sub pr le moment ms j'en aurais plus par la suite

  5. #5
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Avec awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /<\/script:module>/{
                    ligne=$0
                    i=0
                    while ( getline < "fichier_a_inclure.txt" != EOF )
                    {
                            print $0
                    }
                 close("fichier_a_inclure.txt");    
                 print ligne
                }
    {
            print $0
    }

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Par défaut
    Merci à toi becket.

    Par contre je ne comprends pas vraiment.
    La commande awk n'apparait nulle part?
    Le fichier .xba n'apparait nulle part?
    Pourrais tu m'expliquer un peu le script parceque je ne comprends pas grand chose STP.

    Merci d'avance.

    PS: Désolé je débute en bash...

  7. #7
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Citation Envoyé par becket
    Avec awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /<\/script:module>/{
                    ligne=$0
                    i=0
                    while ( getline < "fichier_a_inclure.txt" != EOF )
                    {
                            print $0
                    }
                 close("fichier_a_inclure.txt");    
                 print ligne
                }
    {
            print $0
    }

    Petite explication

    awk permet de scripte pas mal de chose, j'ai noté ici uniquement le script. Voici comment utiliser le script en question ( fichier_script.awk contient les commande notée plus haut )

    awk -f fichier_script.awk fichier_a_traiter.txt

    awk lis le fichier_a_traiter.txt ligne par ligne

    1- si la ligne contient <\/script:module>
    - Alors copie la ligne dans une variable $ligne
    - Ouvre le fichier fichier_a_inclure.txt et affiche toutes les lignes jusqu'a la fin du fichier à inclure
    - Affiche la ligne recopier dans la variable $ligne
    2 - Sinon affiche la ligne


    Simple, non ?

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 65
    Par défaut Ok
    Merci becket,ça marche trés bien.

    Merci de m'avoir apporté votre aide

    Vincent

  9. #9
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Prodige2020
    Merci à vous 2 pour vos réponses.
    frp31:je vais essayer ce soir la méthode proposée et je te dis quoi
    BlaireauOne:je n'ai qu'un end sub pr le moment ms j'en aurais plus par la suite

    Inclusion après l'avant dernière ligne

    ((AvantDernierEnreg=$(wc -l < MonScript.xba) - 1))

    sed "${AvantDernierEnreg}r inclusion.txt" MonScript.xba > resultat.txt

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

Discussions similaires

  1. Ecrire dans un fichier a partir du bash
    Par jamesleouf dans le forum Linux
    Réponses: 1
    Dernier message: 20/03/2006, 16h00
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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