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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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é