मेरे पास एक फाइल है जिसमें नीचे सिंगल लाइन है:
{machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]}
जिसमें मेरे दो डेटासेट हैं:
machineA=[0, 1024, 4, 1028]
machineB=[1, 1025, 5, 1029]
अब, मुझे उपरोक्त फ़ाइल को पढ़ने और इसे इस तरह से विभाजित करने की आवश्यकता है कि मैं प्रत्येक मशीन की जानकारी को ऊपर बताए अनुसार निकाल सकूं और इसे कुछ डेटा संरचना में संग्रहीत कर सकूं।
वर्तमान में, मैं भ्रमित हूँ कि कौन सी डेटा संरचना मुझे बैश शेल स्क्रिप्ट में उपयोग करनी चाहिए। अगर मैं जावा में ऐसा कर रहा था, तो मैं उपयोग करूंगा Map<String, Set<String>>
लेकिन मुझे यकीन नहीं है कि मुझे शेल स्क्रिप्ट में क्या उपयोग करना चाहिए।
और इसे कुछ डेटा संरचना में संग्रहीत करने के बाद, मुझे इसे पुनरावृत्त करने और परिणाम का प्रिंट आउट करने की आवश्यकता है।
मैं नीचे दी गई शेल स्क्रिप्ट का उपयोग करके उपरोक्त फ़ाइल को पढ़ने में सक्षम हूं:
#!/bin/bash
while read -r line; do
echo "$line"
done < data.txt
लेकिन मुझे यकीन नहीं है कि उपरोक्त लाइन डेटा को इस तरह से कैसे विभाजित किया जाए ताकि मैं प्रत्येक मशीन को सूचित कर सकूं और फिर इसे कुछ डेटा संरचना में संग्रहीत कर सकूं?
अपडेट करें:-
नीचे मेरी शेल स्क्रिप्ट है जो मुझे ग्लेन द्वारा दिए गए सुझाव के बाद मिली है -
#!/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