Par chance, votre fichier d'entrée a un format que le Shell comprend lorsqu'il s'agit de d'attribuer une valeur aux variables : var1=value1 var2=value2
etc. Nous pouvons donc simplement lire chaque ligne et utiliser le eval
pour évaluer la ligne.
Mettez ce qui suit dans un fichier, disons parse.sh
, faire chmod +x parse.sh
et l'exécuter avec votre fichier d'entrée comme paramètre.
script parse.sh
:
#!/usr/bin/env bash
while read line; do
eval $line;
echo "$name|$loc|$ip"
done < "$1"
exit 0;
Fichier input.txt
:
name=Joan age=42 ip=172.20.1.80 sex=M loc=UK
loc=IR sex=F ip=172.20.1.1 age=32 name=Sandra
Cours :
me@ubuntu:~> ./parse.sh input.txt
Joan|UK|172.20.1.80
Sandra|IR|172.20.1.1
Veuillez noter que les valeurs ne doivent pas comporter d'espace. Par exemple
ip=... name=Ubai salih loc=...
ne fonctionnerait pas et donnerait des erreurs de syntaxe. De plus, si le fichier d'entrée contient une ligne avec un caractère bad_command
cette commande est exécutée car c'est ainsi que eval
fonctionne : elle exécute simplement la chaîne de caractères donnée.