Exploitation tableau

Résolu
Bonjour,

j'ai un tableau comme suit
un champ1 script
un champ2 utilité : fonc1
un champ3 repertoir : rep1/2
un champ4 fichier generé :fic1/2/3...etc
un champ5 du nouveau nom de fichier : fich1/2/3...etc

je doit ecrire un script qui doit renomer en fonction du champ "script" le fichier qui genere Champ4 avec le nouveau nom champ5

#Champ 1 Champ2 Champ3 Champ4 Champ5
Script0.sh | fonc1 | Rep1 | fic1 | fich1
Script1.sh | fonc1 | Rep1 | fic2 | fich2
Script1.sh | fonc1 | Rep1 | fic3 | fich3
Script1.sh | fonc1 | Rep1 | fic4 | fich4
Script2.sh | fonc1 | Rep1 | fic5 | fich5
Script2.sh | fonc1 | Rep2 | fic6 | fich6

j'avoue que je fais des boucles ,des test mais je ne m'en sort pas :-(

si qlq a une idée ??

merci beaucoup

15 réponses

  1. Contributeur
    comme ça ?
    $ ./k3 Script1.sh
    mv fic2 fich2
    mv fic3 fich3
    mv fic4 fich4
    $ cat k3
    #!/bin/ksh
    awk -F "|" -v n=$1 '$1 ~ n {print "mv " $4, $5}' tableau

    pour effectuer les mv :
    ./k3 Script1.sh | ksh
    1. Bonjour,

      Des scripts passent (par crontab) et cree des fichiers s'appeles fic1/2/3 ...etc .je dois les renomer suivant le tableau en fct du script qui passe en fich1/2/3...etc

      je ne peux pas le faire sur les scripts eux meme, je doit le faire a partir du tableau.

      Merci
      1. Contributeur
        avec:
        #Champ 1 Champ2 Champ3 Champ4 Champ5
        Script0.sh | fonc1 | Rep1 | fic1 | fich1
        on crée un script Script0.sh qui renomme fic1 en fich1 , etc ?
        1. non.
          je doit ecrire un script qui scanne le tableau pour dire si c'est le script0.sh qui est passer (a passer en parmaetre de mon script ) alors renomer le fichier dans le champ4 avec le nom du fichier champ5:

          ./Monscript.ksh "script0.sh"

          Merci
          1. Merci ,

            J'ai bien reconduit ton idée mais ca me fait :

            Usage: mv [-I] [ -d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src target
            1. Euh non ...par contre des espaces entre les deux "|" et le nom :

              |"espace"fic1"espace"|
              1. voila comme je l'ai

                script2.sh | type | rep | fic1 | fich1 | O

                le dernier champs :"O" c pour la reprise ou pas ..mais ce n'est pas important.
                1. Contributeur
                  $ cat tableau
                  script2.sh | type | rep | fic1 | fich1 | O
                  $ touch fic1
                  $ ./k3 script2.sh | ksh
                  $ ls fich1
                  fich1
                  1. Bonjour,

                    Je n'ai pas compris :-( ....je fais le cat de ton script :

                    awk -F "|" -v n=$1 '$1 ~ n {print "mv " $4 $5}' Tableau_ref.txt

                    mon tableau ( juste une ligne ..)

                    script2.sh | type | rep | fic1 | fich1 | O

                    je lance le script comme suit :

                    ./cop.ksh script2.sh|ksh

                    j'ai le resultats suivant :
                    + awk -F | -v n=script2.sh $1 ~ n {print "mv " $4 $5} Tableau_ref.txt
                    Usage: mv [-I] [ -d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src target
                    or: mv [-I] [-d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src1 ... srcN directory

                    desolé ...:-(
                    1. Contributeur
                      Salut,

                      {print "mv " $4 $5}
                      Il manque une virgule entre $4 et $5 ;-(

                      {print "mv " $4, $5}
                  2. idem :
                    + awk -F | -v n=script2.sh $1 ~ n {print "mv " $4, $5} Tableau_ref.txt
                    Usage: mv [-I] [ -d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src target
                    or: mv [-I] [-d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src1 ... srcN directory

                    je suis sous AIX 7.1 si ca peut aider ...
                    1. Contributeur
                      suivant les claviers, il y a plusieurs | ou ¦
                      vérifier que celui du script est le même que dans le fichier
                      1. SUPEEEEEEEEEEEEEEEER ca fct !!

                        ce n'est pas le "|" ..le pb etait entre la chaise et le claviers :-) ..le champ awk etait pas bon !!

                        Thx a lot !!!!