Script Bash sous Linux

Résolu/Fermé
olilo - Modifié par olilo le 12/04/2011 à 20:43
olilo Messages postés 11 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 31 mai 2013 - 13 avril 2011 à 20:01
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
A voir également:

4 réponses

olilo Messages postés 11 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 31 mai 2013
Modifié par olilo le 13/04/2011 à 16:38
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2011 à 23:29
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
13 avril 2011 à 08:28
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
olilo Messages postés 11 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 31 mai 2013
13 avril 2011 à 20:01
Merci à tous, je ferme le post.



Olivier
0