Script Bash sous Linux

Résolu
olilo -  
olilo Messages postés 14 Statut Membre -
Bonjour à tous.

Je suis sur un petit problème de script bash sous Linux, j'en fais profiter tout le monde :)

Voila, j'ai un fichier texte du type:

valeur1;valeur2
valeur3;valeur4
valeur5;valeur6

Mon objectif est de lire le fichier ligne par ligne et de créer à chaque fois un fichier portant comme nom la valeur de la 1ere colonne et comportant la valeur de la 2eme colonne.

Donc pour la 1ere ligne, le fichier s'appellerait "valeur1" et contiendrait "valeur2"

J'arrive à lire le fichier ligne par ligne, mais comment récupérer la 1ere valeur pour nommer le fichier ?

Voila, je vais chercher de mon côté, si vous avez des idées, hésitez pas !

Merci,

Olivier

4 réponses

  1. olilo Messages postés 14 Statut Membre
     
    Je pense avoir trouvé une solution un peu barbare, mais ca a l'air de fonctionner. Si vous avez mieux, je veux bien des suggestions :

    Donc mon fameux fichier s'appelle classeur1.txt
    Je travaille dans le dossier : /root/tempo/
    mon script s'appelle script1.sh

    #!/bin/bash
    #script1.sh
    while read line
    do echo $line| cut -d $ -f2 >/root/tempo/'echo $line |cut -d $ -f1| tr -d " " '
    done

    Ensuite j'exécute ./root/tempo/script1.sh<classeur1.txt

    Et ca me génère tout mes fichiers avec le contenu.

    Bye,

    Olivier
    0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ ls
    plop
    
    $ cat plop
    valeur1;valeur2
    valeur3;valeur4
    valeur5;valeur6
    
    $ OIFS=$IFS; IFS=";" ; while read A B ; do echo "$B" > $A ; done < plop ; IFS=$OIFS
    
    $ ls
    plop  valeur1  valeur3  valeur5
    
    $ cat valeur1
    valeur2
    
    $ cat valeur3
    valeur4
    
    $ cat valeur5
    valeur6
    
    $

    ;-))
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ cat a1
    valeur1;valeur2
    valeur3;valeur4
    valeur5;valeur6
    $ 
    $ awk -F';' '{print $2 > $1}' a1
    $ ls val*
    valeur1  valeur3  valeur5
    $ head val*
    ==> valeur1 <==
    valeur2
    
    ==> valeur3 <==
    valeur4
    
    ==> valeur5 <==
    valeur6
    $ 
    
    0
  4. olilo Messages postés 14 Statut Membre
     
    Merci à tous, je ferme le post.

    Olivier
    0