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
    1. Contributeur
      hello
      donne un exemple avant après
      0
      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
        0
        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 ?
          0
          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
            0
            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
              0
              1. Contributeur
                des espaces dans les noms de fichiers ?
                0
                1. Euh non ...par contre des espaces entre les deux "|" et le nom :

                  |"espace"fic1"espace"|
                  0
                  1. Contributeur
                    non, ils sont ignorés, montre la ligne du tableau
                    0
                    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.
                      0
                      1. Contributeur
                        $ cat tableau
                        script2.sh | type | rep | fic1 | fich1 | O
                        $ touch fic1
                        $ ./k3 script2.sh | ksh
                        $ ls fich1
                        fich1
                        0
                        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é ...:-(
                          0
                          1. Contributeur
                            Salut,

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

                            {print "mv " $4, $5}
                            0
                        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 ...
                          0
                          1. Contributeur
                            suivant les claviers, il y a plusieurs | ou ¦
                            vérifier que celui du script est le même que dans le fichier
                            0
                            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 !!!!
                              0