Tengo un archivo que contiene la única línea a continuación:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
en el que tengo dos conjuntos de datos:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
Ahora, necesito leer el archivo anterior y dividirlo de tal manera que pueda extraer la información de cada máquina como se mencionó anteriormente y almacenarla en alguna estructura de datos.
Actualmente, estoy confundido sobre qué estructura de datos debería usar en un script de shell bash. Si estuviera haciendo esto en Java, lo usaría Map<String, Set<String>>
pero no estoy seguro de qué debo usar en un script de shell.
Y después de almacenarlo en alguna estructura de datos, necesito iterarlo e imprimir el resultado.
Puedo leer el archivo anterior usando el script de shell a continuación:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
Pero no estoy seguro de cómo dividir los datos de la línea anterior de tal manera que pueda extraer la información de cada máquina y luego almacenarla en alguna estructura de datos.
ACTUALIZAR:-
A continuación se muestra mi script de shell que tengo después de seguir la sugerencia dada por 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