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 :

Modification conditionnelle sur fichiers d'un répertoire


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut Modification conditionnelle sur fichiers d'un répertoire
    Bonjour,

    N'ayant pas l'habitude de faire du shell, je viens vous expliquer mon problème en espérant que quelqu'un puisse y répondre.

    J'ai dans un répertoire que l'on va nommer xml 6 fichier xml que je souhaiterais concaténer.

    Individuellement, j'arrive avec la commande sed à supprimer les lignes désirée.
    Par contre je dois automatiser cette tache donc en faire un script.

    Je souhaiterais donc lister les fichier de mon répertoire XML, et via un boucle dans laquelle il y aura une condition, supprimer </racine> dans les 5 premières occurrences et supprimer <racine> dans les 5 dernières.

    Les fichiers XML n'auront pas les même noms:

    exemple:
    fichier 1 : fic1_timestamp.xml
    fichier 2 : fic2_timestamp.xml

    structure des fichier XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <racine>
          <a></a>
          <b></b>
    </racine>

    Merci d'avance.

  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
    tu as le choix mais en gros quand tu as un lot de fichiers tu peux par exemple faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /rep/a/trier -type f -name "fic*_timestamp.xml" -exec unecommande {} \;
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in /rep/a/trier/fic*_timestamp.xml ; do unecommande ${i} ; done
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while read
    do
       unecommande $REPLY
    done < listagedesfic*timestamp.xml
    la suppression puisque tu connais sed des 5premières & 5 dernières occurances ne sera pas un problème.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Si ta version de sed admet l'option "-i" (in-place), un simple sed -i.bak 'syntaxe_sed_qui_va_bien' *.xml depuis le répertoire devrait suffire

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 295
    Par défaut
    Admettons que tu aies un programme sed. Tu le mets dans un fichier texte avec en première ligne un shebang:Puis tu le rends exécutable. Tu obtiens alors un script qui traitera tes fichiers. Admettons que tu l'appelles ./antiRacine.sed

    Après pourquoi ne pas tenter une substitution de processus?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat < <( ./antiRacine.sed *.xml )
    Le tout est de savoir si tu concatènes puis modifies OU si tu modifies puis concatènes.

    Rappel:
    remplace les 5 premières occurences dans l'espace de travail de sed. Et
    permet de mettre tout le fichier dans l'espace de travail, les lignes étant séparées par \n

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Merci beaucoup pour vos réponses.

    Je suis en train d'écrire la solution et je la poste après si jamais ça peut servir à quelqu'un d'autre.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2007, 13h48
  2. [Configuration] Droits sur fichiers et répertoire
    Par npirard dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 09/08/2007, 11h39
  3. [VBA-E] Opération sur fichiers xls dans un même répertoir
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/03/2007, 11h58
  4. Modification sur fichier
    Par Legio dans le forum C
    Réponses: 44
    Dernier message: 12/05/2006, 01h21

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