J'ai un fichier qui contient la seule ligne ci-dessous:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
dans lequel j'ai deux jeux de données:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
Maintenant, je dois lire le fichier ci-dessus et le diviser de manière à pouvoir extraire les informations de chaque machine comme mentionné ci-dessus et les stocker dans une structure de données.
Actuellement, je ne sais pas quelle structure de données je devrais utiliser dans un script shell bash. Si je faisais cela en Java, j'utiliserais Map<String, Set<String>>
mais je ne sais pas quoi utiliser dans un script shell.
Et après l'avoir stocké dans une structure de données, je dois l'itérer et imprimer le résultat.
Je peux lire le fichier ci-dessus en utilisant le script shell ci-dessous:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
Mais je ne sais pas comment diviser les données de ligne ci-dessus de manière à pouvoir extraire les informations de chaque machine et les stocker dans une structure de données?
METTRE À JOUR:-
Voici mon script shell que j'ai obtenu après avoir suivi la suggestion de glenn -
#!/bin/bash
while read -r line; do
echo "$line"
declare -A "$(
echo "x=("
grep -oP '(\w+)(?==)|(?<==\[).*?(?=\])' <<< "$line" |
tr -d , |
paste - - |
sed 's/^/[/; s/\t/]="/; s/$/"/'
echo ")"
)"
for key in "${!x[@]}"; do # need quotes here
for element in ${x[$key]}; do # no quotes here
printf "%s\t%s\n" "$key" "$element"
done
done
done < primary.txt