У мене є файл, який містить один рядок нижче:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
у якому я маю два набори даних:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
Тепер мені потрібно прочитати вищезазначений файл і розділити його таким чином, щоб я міг витягувати інформацію про кожну машину, як було зазначено вище, і зберігати її в якійсь структурі даних.
Наразі я плутаю, яку структуру даних я повинен використовувати в скрипті bash shell. Якби я робив це на 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