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

Scripts/Batch Discussion :

Ecrire dans un fichier


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut Ecrire dans un fichier
    Bonjour,

    Voici ma problématique : j'ai deux fichiers fichier1.txt et fichier2.txt. Fichier2 a une structure précise de type :
    Le but du script est de récupérer le contenu de fichier1.txt et de le copier à la fin de 'MON CONTENU' mais avant le '}' du fichier2.txt. A noter que dans 'MON CONTENU' j'ai déjà des } donc je ne peux pas faire une recherche sur ce caractère.

    D'avance merci,

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    salut,

    } est le dernier caractère de ton fichier2 ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    SAlut,

    Merci de ta réponse et désolé mais j'avais pas vu qu'il y avait une réponse.

    Oui, } est le dernier caractère de mon fichier. Le must serait d'insérer le contenu avant ce caractère. Mais le soucis c'est que j'ai d'autres } présent dans le fichier.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Voilà une piste parmi d'autres possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f %%a in ('sed -n "/^}$/=" Fichier2') do set var=%%a
    sed "%var%ctexte\n}" Fichier2
    Démarche :

    1. on récupère le n° de la dernière ligne qui ne contient que "}" dans fichier2
    2. on remplace dans fichier2 ce n° de ligne par "texte" ainsi qu'un retour chariot avec un "}" à la ligne suivante

    A noter que l'option -i de sed te permettrait d'éditer directement Fichier2

    Bien sur c'est à adapter, notamment le simple "texte" qu'il faudrait remplacer par le contenu de ton fichier1

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    OK merci,
    Je vais étudier cette commande....etant novice le for est un peu violent

    Merci pour tout!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f %%a in ('sed -n "/^}$/=" Fichier2') do set var=%%a
    sed "%var%ctexte\n}" Fichier2
    JE vais faire le boulet mais j'ai vraiment du mal à comprendre...
    Comment il trouve le caractère } ?
    Ou tu indiques le chemin du fichier1 ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    J'ai ça comme message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed : Extra characters after command
    Je comprends la premiere ligne du code, mais la deuxième je comprends absolument rien...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >type Fichier1.txt
    
    blabla
    {
    blabla
    }
    blabla
    blabla
    {
    blabla
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >type Fichier2.txt
    {
    MON CONTENU
    }
    Si j'ai bien compris, le résultat attendu dans cet exemple serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    MON CONTENU
    blabla
    {
    blabla
    }
    blabla
    blabla
    {
    blabla
    }
    Tu peux peut être y arriver de cette manière, puisque "} est le dernier caractère de mon fichier"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >sed -i "$d;s/$/\r/g" Fichier2.txt & type Fichier1.txt >> Fichier2.txt
    résultat Fichier2.txt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    MON CONTENU
    blabla
    {
    blabla
    }
    blabla
    blabla
    {
    blabla
    }
    grossomodo on supprime la dernière ligne de Fichier2 (donc le "}"), ensuite on copie le contenu de Fichier1 à la suite de Fichier2

    Donc si tu as besoin de garder le dernier } :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "$d;s/$/\r/g" Fichier2.txt & type Fichier1.txt >> Fichier2.txt &(echo. & echo })>> Fichier2.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
    MON CONTENU
    blabla
    {
    blabla
    }
    blabla
    blabla
    {
    blabla
    } 
    }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    Et ben merci! Je m'attendais pas à une réponse d'une telle qualité!
    Je test tout ça!

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    J'ai un illegal option --i ((((

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    j'utilise sed 4.15 version à partir de laquelle l'option -i est incluse http://gnuwin32.sourceforge.net/packages/sed.htm

Discussions similaires

  1. Ecrire \" dans un fichier
    Par photorelief dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 15h56
  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