Optimiser mon extraction de variables
Salut à tous,
J'ai un script bash grace auquel je lis un fichier.
Dans ce fichier, il y a plusieurs lignes qui contiennent des champs et des valeurs comme suit :
Code:
1 2
| couleur=rouge; objet=maison; nom=plop; prenom=pasplop; adresse=0xFF2245; date=today
couleur=bleu; objet=bateau; nom=gloup; prenom=pasgloup; adresse=0xFF2250; date=hier |
Je souhaite remettre en forme ces valeurs de la forme suivante :
Code:
1 2 3 4 5 6
| ligne_de_valeurs couleur rouge
ligne_de_valeurs objet maison
ligne_de_valeurs nom plop
ligne_de_valeurs prenom pasplop
ligne_de_valeurs adresse 0xFF2245
ligne_de_valeurs date today |
Dans un fichier portant le nom+".txt", puis idem pour chaque ligne du fichier de base.
J'ai créé un script qui fonctionne très bien, mais je pense qu'il peut etre GRANDEMENT optimisé. En effet je pense que je me suis galéré un peu, mais mes faibles connaissances dans la programmation unix, ne m'ont pas laissé le choix.
Voici mon script tel qu'il est à l'heure actuelle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash
fichier=/home/Moi/Desktop/myfile.txt
rep_dest=dest/
rep_courant=$(pwd)
while read ligne
do
i=1
echo > $rep_dest"fichier_temp"
while [ "$(echo $ligne | cut -d";" -f$i)" ]
do
champ=$(echo $ligne | cut -d" " -f$i | cut -d"=" -f1) #On copie le champ
valeur=$(echo $ligne | cut -d" " -f$i | cut -d"=" -f2 | cut -d";" -f1) #On copie la valeur associé au champ
if [ "$champ" = "nom" ]
then
nom_fichier="$valeur.txt"
fi
echo -e "ligne_de_valeurs\t$champ\t$valeur" >> $rep_dest"fichier_temp"
((i++))
done
if [ ! -f "$rep_dest$nom_fichier" ]
then
echo -e "Arrivée d'un nouveau nom > $rep_courant/$rep_dest$nom_fichier"
fi
done < $fichier |
Je pense que ce code va faire bondir certains :) Si vous pouviez m'aider dans son optimisation, je vous en saurait gré ;)