আমার কাছে একটি ফাইল রয়েছে যার নীচে একক লাইন রয়েছে:
{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