[Shell] Manipulation de fichers

Résolu
Bonjour à tous,
voila j'ai actuellement deux fichiers qui ont la structure suivantes:

fichier 1:
identifiant1 blablalbla
chainequivabien ""
identifiant2 blalvlala
chainequivabien ""
identifiant3 blablalvba
chainequivabien ""
.....

Fichier 2:
identifiant1 mot1
identifiant2 mot2
identifiant3 mot3
.....

Ce que je cherche à faire c'est insérer dans le fichier 1 entre les caractères "" le motX en fonction de l'identifiant associé. Le fichier en sorti devrait donc ressembler à ceci:

identifiant1 blablalbla
chainequivabien "mot1"
identifiant2 blalvlala
chainequivabien "mot2"
identifiant3 blablalvba
chainequivabien "mot3"

Si quelque'un pouvait m'aider car je ne vois absoluement pas comment faire (et je dois faire ça en shell).

Merci d'avance à tous
Configuration: Windows XP Internet Explorer 6.0

7 réponses

  1. Modérateur
    Salut,

    Tu dois faire ça en shell pur ou tu as le droit d'utiliser d'autres outils ?
    1. malheureusement pour moi, shell pur
      1. Modérateur
        Donc c'est un devoir ?
    2. non pas du tout, c'est pour le boulot, je dois faire ça mais je ne suis pas développeur et je n'ai donc pas d'outils à ma disposition.
      ça fait quelques années que je suis plus sur les bancs de l'école ;-)
      1. Modérateur
        Salut,

        Alors si c'est pour boulot, et seulement le résultat compte, pour quoi se limiter à shell.
        Perl ne te conviens pas?!
        1. Modérateur
          Bon je supposerai que les guillemets sont les seuls sur la ligne "chainequivabien" et qu'il n'y en a pas sur la ligne précédente...
          Je supposerai aussi que tu disposes d'une version de "sed" acceptant l'option "-i"...
          jp@MDK:~/tmpfs ssh$ cat fich1
          identifiant1 blablalbla
          chainequivabien ""
          identifiant2 blalvlala
          chainequivabien ""
          identifiant3 blablalvba
          chainequivabien ""
          
          jp@MDK:~/tmpfs ssh$ cat fich2
          identifiant1 mot1
          identifiant2 mot2
          identifiant3 mot3
          
          jp@MDK:~/tmpfs ssh$ cat foo.sh
          #! /bin/sh
          
          #set -xv
          
          while read line
          do
          sed -i "/${line% *}/{n;s/\"\"/\"${line#* }\"/}" fich1
          done < fich2
          
          jp@MDK:~/tmpfs ssh$ ./foo.sh
          
          jp@MDK:~/tmpfs ssh$ cat fich1
          identifiant1 blablalbla
          chainequivabien "mot1"
          identifiant2 blalvlala
          chainequivabien "mot2"
          identifiant3 blablalvba
          chainequivabien "mot3"
          jp@MDK:~/tmpfs ssh$
          
          ;-))
          1. Pas de soucis, je récupère ça dans deux min sur ma bécanne, mais alors en perl je m'y connais encore mois
            1. C'est nickel ça marche impec. Désolé du temps de réponse mais je voulais êtr certain de comprendre ta ligne de commande. Car copier coller sans comprendre, ça sert a rien et on apprend pas.

              Bref encore merci pour ton aide.
              1. Modérateur
                Pas de soucis, et si tu as tout compris c'est encore mieux ;-))