我有一个包含以下单行的文件:
{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>>
但不确定在shell脚本中应该使用什么。
在将其存储在某种数据结构中之后,我需要对其进行迭代并打印出结果。
我可以使用以下shell脚本读取以上文件:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
但是我不确定如何以上述方式拆分上述行数据,以便能够提取每台机器的信息,然后将其存储在某些数据结构中?
更新:-
以下是我遵循glenn给出的建议后得到的shell脚本-
#!/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