Saya memiliki file yang berisi satu baris di bawah ini:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
di mana saya memiliki dua set data:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
Sekarang, saya perlu membaca file di atas dan membaginya sedemikian rupa sehingga saya dapat mengekstraksi informasi setiap mesin seperti yang disebutkan di atas dan menyimpannya dalam beberapa struktur data.
Saat ini, saya bingung struktur data mana yang harus saya gunakan dalam skrip bash shell. Jika saya melakukan ini di Jawa, saya akan menggunakan Map<String, Set<String>>tetapi saya tidak yakin apa yang harus saya gunakan dalam skrip shell.
Dan setelah menyimpannya dalam beberapa struktur data, saya perlu mengulanginya dan mencetak hasilnya.
Saya dapat membaca file di atas menggunakan skrip shell di bawah ini:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
Tetapi saya tidak yakin bagaimana cara membagi data garis di atas sedemikian rupa sehingga saya dapat mengekstraksi setiap informasi mesin dan kemudian menyimpannya dalam beberapa struktur data?
MEMPERBARUI:-
Di bawah ini adalah skrip shell yang saya dapatkan setelah mengikuti saran yang diberikan oleh 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