ฉันมีไฟล์ที่มีบรรทัดเดียวด้านล่าง:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
ที่ฉันมีสองชุดข้อมูล:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
ตอนนี้ฉันต้องอ่านไฟล์ข้างต้นและแยกมันในแบบที่ฉันสามารถดึงข้อมูลของเครื่องแต่ละเครื่องตามที่กล่าวไว้ข้างต้นและเก็บไว้ในโครงสร้างข้อมูลบางอย่าง
ขณะนี้ฉันสับสนโครงสร้างข้อมูลที่ฉันควรใช้ใน bash shell script ถ้าฉันทำสิ่งนี้ใน Java ฉันจะใช้Map<String, Set<String>>
แต่ฉันไม่แน่ใจว่าฉันควรใช้อะไรในเชลล์สคริปต์
และหลังจากเก็บไว้ในโครงสร้างข้อมูลฉันต้องวนซ้ำและพิมพ์ผลลัพธ์
ฉันสามารถอ่านไฟล์ด้านบนโดยใช้เชลล์สคริปต์ด้านล่าง:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
แต่ฉันไม่แน่ใจว่าจะแยกข้อมูลบรรทัดข้างต้นด้วยวิธีดังกล่าวอย่างไรเพื่อให้ฉันสามารถดึงข้อมูลแต่ละเครื่องจากนั้นจัดเก็บไว้ในโครงสร้างข้อมูลบางส่วนได้
UPDATE: -
ด้านล่างนี้คือเชลล์สคริปต์ที่ฉันได้รับหลังจากทำตามคำแนะนำที่ได้รับจากเกล็น -
#!/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