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 :

Contrôle sur le fichier à recuperer


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut Contrôle sur le fichier à recuperer
    Salut à tous,

    J’écris un programme shell qui doit se comporter comme suit: j'ai un répertoire dans lequel je stock des fichiers .xml et .csv. Chaque fichier xml comporte un fichier .csv. je veux récupérer les fichiers .xml du jour mais m'assurer que leur .csv existe bel et bien. Par exemple si je veux récupérer le fichier 1111.xml, je dois verifier que le .csv existe c'est à dire 1111.csv.

    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
     
    #!/bin/ksh
     
    set -x 
     
    cd reception
     
     
       echo "open xxx.xxx.xxx.xxx"       > param5
       echo "user xxxxx xxxxx" >> param5 
       echo "cd arrive "                >> param5
     
       liste_file_xml='*.xml'
       liste_file_csv='*.csv'
     
    if [ ! -f $liste_file_xml ]
    then
        echo "Aucun fichier xml present dans le repertoire"
        exit
    else
     
        fgrep -f $liste_file_xml  $liste_file_csv > bonfichier
     
    	for fic in  bonfichier
          do
            echo "mget *.xml"                  >> param5*
    		echo "mget *.csv"                  >> param5
          done
    fi;
            echo "bye"                         >> param5
            ftp -i -n < param5
    Mon souci c'est que je ne suis pas trop sûr de la méthode que je veux utiliser ensuite avec la fonction fgrep -f je n'arrive pas à ignorer les extensions lors de la comparaison. Alors si quelqu'un a une meilleure idée je suis disponible.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 728
    Par défaut

    Je ne comprends pas comment vous (toi et d'autres, car ce n'est pas rare) faites pour écrire des "scripts" sans en avoir tester la moindre commande dans un terminal.


    à part ça, pourquoi ksh ? plutôt que sh, ou bash ?

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour

    Je n'ai pas lu le script qui m'a l'air de toute façon trop compliqué. On fait cela en une ligne avec bash.
    On utilise "find" pour dresser la liste des csv, puis la liste des xml, on enlève les extensions avec "sed", on trie avec "sort" et on utilise "comm" pour savoir quel fichier n'est pas commun à csv et xml.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 728
    Par défaut
    On utilise "find" pour dresser la liste des csv, puis la liste des xml, on enlève les extensions avec "sed", on trie avec "sort" et on utilise "comm" pour savoir quel fichier n'est pas commun à csv et xml.
    et encore...! ça c'est parce que t'aimes fumer*

    une bête boucle for sur les fichiers xml, un remplacement de paramètres pour enlever l'extension, et la remplacer par csv, dans un test d'existence de fichier, et hop !

    --
    *rapport aux pipes

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Salut à tous,

    merci pour vos messages

    problème résolu :

    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
    33
    34
    35
    36
     
    #!/bin/ksh
     
    xml=`ls -1 *.xml`
    cks=`ls -1 *.csv`
     
    for fichier1 in $xml
    do
        ficxml=`$(basename $fichier1 .${fichier1##*.})`
        echo $ficxml >> $fichierxml
    done
     
    for fichier2 in $csv
    do
      ficcks=`$(basename $fichier2 .${fichier2##*.})`
        echo $ficcsv >> $fichiercks
    done
     
    fgrep -f $fichierxml  $fichiercsv > $bonfichier
     
    fic = `cat $bonfichier`
     
    if [ -z $fic ]
    then
        echo "Aucun fichier traite"
        exit
    else
    for t in $fic
    do
       cp $t.xml sauve/
       cp $t.csv sauve/
    done
    fi;
     
    echo > $fichierxml
    echo > $fichiercsv

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 728
    Par défaut
    problème résolu :
    ça m'étonnerais !
    au vu des erreurs de syntaxe, des variables non renseignées, l'algo oiseux, le script devrait planter.

    et puis ON N'UTILISE PAS ls DANS UN SCRIPT !!!

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Pourtant j'obtiens le résultat attendu sur SOLARIS 11.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par degio1er Voir le message
    Pourtant j'obtiens le résultat attendu sur SOLARIS 11.
    Il me semble que Solaris n'est pas un linux.

    Peut-être devrais-tu poster ta question sur l'autre groupe approprié: autres-systemes/unix/shell-commandes-posix

    Le script que tu présentes est-il complet?

    L'exécutes-tu ou le sources-tu?

    C'est bizarre (comme dit N_BaH) qu'il puisse fonctionner alors que les variables fichierxml fichiercks bonfichierne sont pas définies ?!

    Et je ne connais pas de shell qui accepte une espace avant le signe "=", comme dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fic = `cat $bonfichier`
    Bizarre, tout ça...

    (et on n'utilise pas 'ls' dans un script...)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 728
    Par défaut
    pourquoi ferait-il une chose pareille, alors qu'il est certainx que son script fonctionne.

  10. #10
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 583
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    pourquoi ferait-il une chose pareille, alors qu'il est certainx que son script fonctionne.
    Après tout cher modérateur, tout est question de satifaction client (cf. « accord de niveau de service » ci-dessous) :

    https://fr.wikipedia.org/wiki/Service_level_agreement
    Service level agreement — Wikipédia
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 728
    Par défaut
    comme je l'ai dit, et comme l'a détaillé jack-ft, le script posté ne peut pas fonctionner, car il est plein d'erreur de syntaxe.
    alors, la satisfaction client...

Discussions similaires

  1. [Upload] Contrôle sur nom Fichier
    Par Katachana dans le forum Langage
    Réponses: 1
    Dernier message: 28/03/2008, 11h35
  2. [BASH] boucle for sur des fichiers, recuperation du chemin ?
    Par zevince dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 13/11/2007, 11h47
  3. recuperation des données sur un fichier excel
    Par ghyosmik dans le forum Excel
    Réponses: 2
    Dernier message: 19/09/2007, 12h26
  4. recuperation de quelque ligne sur un fichier séquenciel
    Par scofild20 dans le forum Général VBA
    Réponses: 2
    Dernier message: 07/08/2007, 14h09
  5. Réponses: 8
    Dernier message: 13/07/2006, 02h17

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