[Shell] Manipulation de fichers

Résolu
raktabija Messages postés 5 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tu dois faire ça en shell pur ou tu as le droit d'utiliser d'autres outils ?
    0
  2. raktabija Messages postés 5 Statut Membre
     
    malheureusement pour moi, shell pur
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Donc c'est un devoir ?
      0
  3. raktabija Messages postés 5 Statut Membre
     
    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 ;-)
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Alors si c'est pour boulot, et seulement le résultat compte, pour quoi se limiter à shell.
    Perl ne te conviens pas?!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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$
    
    ;-))
    0
  7. raktabija Messages postés 5 Statut Membre
     
    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
    0
  8. raktabija Messages postés 5 Statut Membre
     
    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.
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Pas de soucis, et si tu as tout compris c'est encore mieux ;-))
      0