У меня есть файл, который содержит одну строку ниже:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
в котором у меня есть два набора данных:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
Теперь мне нужно прочитать вышеуказанный файл и разбить его таким образом, чтобы я мог извлечь информацию о каждой машине, как указано выше, и сохранить ее в некоторой структуре данных.
В настоящее время я не понимаю, какую структуру данных мне следует использовать в сценарии оболочки bash. Если бы я делал это на Java, я бы использовал, Map<String, Set<String>>но я не уверен, что я должен использовать в сценарии оболочки.
И после сохранения в некоторой структуре данных, мне нужно повторить и распечатать результат.
Я могу прочитать вышеуказанный файл, используя скрипт ниже:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
Но я не уверен, как разделить вышеуказанные строчные данные таким образом, чтобы я мог извлечь информацию о каждой машине и затем сохранить ее в некоторой структуре данных?
ОБНОВИТЬ:-
Ниже приведен мой сценарий оболочки, который я получил после того, как следовал предложению 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