बैश में 2डी ऐरे को पढ़ने के लिए रीडारे कमांड का उपयोग कैसे करें

Baisa Mem 2di Aire Ko Parhane Ke Li E Ridare Kamanda Ka Upayoga Kaise Karem



बैश एक लोकप्रिय शेल स्क्रिप्टिंग भाषा है जिसका उपयोग लिनक्स और यूनिक्स ऑपरेटिंग सिस्टम में किया जाता है। यह कमांड और सुविधाओं का एक समृद्ध सेट प्रदान करता है जो दोहराए जाने वाले कार्यों को स्वचालित करना आसान बनाता है। बैश में 'रीडर्रे' सबसे उपयोगी कमांड में से एक है। इस आदेश के साथ, फ़ाइल की पंक्तियों को 2D सरणी में पढ़ा जा सकता है। इस पोस्ट में, हम बैश के 'रीडर्रे' कमांड का उपयोग करके फ़ाइल से लाइनों को 2डी सरणी में पढ़ने के तरीके पर जायेंगे।

बैश में 'readarray' का प्रयोग करना

'रीडर्रे' कमांड फ़ाइल या मानक इनपुट से लाइनें पढ़ता है और उन्हें एक सरणी में असाइन करता है। 'रीडर्रे' का उपयोग करने के लिए सिंटैक्स इस प्रकार है:







rearray [ -डी साझा करें ] [ -एन काउंट ] [ - मूल ] [ -s काउंट ] [ -टी ] सरणी


'रीडर्रे' कमांड के लिए उपलब्ध विकल्प हैं:



'-डी शेयर': लाइनों को सरणी तत्वों में विभाजित करते समय उपयोग करने के लिए डिलीमीटर सेट करता है और डिफ़ॉल्ट रूप से, डिलीमीटर एक न्यूलाइन वर्ण होता है।



'-एन काउंट': सरणी में पढ़ने के लिए पंक्तियों की अधिकतम संख्या निर्दिष्ट करता है।





'-ओ मूल' : सरणी का प्रारंभिक सूचकांक सेट करता है।

'-s काउंट': सरणी में पढ़ने से पहले छोड़ी जाने वाली पंक्तियों की संख्या निर्दिष्ट करता है।



'-टी': सरणी में पढ़ी गई प्रत्येक पंक्ति से अनुगामी न्यूलाइन वर्ण को हटाता है।

यहाँ एक फ़ाइल से 2D सरणी में लाइनों को पढ़ने के लिए 'readarray' का उपयोग करने का एक उदाहरण दिया गया है और उसके लिए मैंने एक बनाया है testfile.txt जिसकी सामग्री हैं:

1 2 3
4 5 6
7 8 9


तो यहाँ पूरी बैश स्क्रिप्ट है जो 'readarray' कमांड के उपयोग को प्रदर्शित करती है:

#!/बिन/बैश
# फ़ाइल से सरणी में लाइनें पढ़ें
rearray -टी पंक्तियां < testfile.txt
# 3 पंक्तियों और 3 स्तंभों के साथ 2D सरणी घोषित करें
घोषित -ए सरणी
# लाइनों पर पुनरावृति करें और प्रत्येक पंक्ति को तत्वों में विभाजित करें
के लिए मैं में ' ${!लाइनें[@]} ' ; करना
भारतीय विदेश सेवा = '' पढ़ना -आर -ए तत्वों <<< ' ${लाइनें[i]} '
के लिए जे में ' ${!तत्व[@]} ' ; करना
अगर [ [ -एन ' ${तत्व[जे]} ' ] ] ; तब
सरणी [ $मैं , $ जे ] = ${तत्व[जे]}
होना
पूर्ण
पूर्ण
# सरणी प्रिंट करें
के लिए ( ( मैं = 0 ;मैं < 3 मैं++ ) ) ; करना
के लिए ( ( जे = 0 ;जे < 3 जे ++ ) ) ; करना
गूंज -एन ' ${सरणी[$i,$j]} '
पूर्ण
गूंज
पूर्ण


यहाँ पहले मैंने 'सरणी' नामक एक 2डी सरणी घोषित की है और फिर 'पंक्तियों' सरणी में 'testfile.txt' नामक फ़ाइल से पंक्तियों को पढ़ने के लिए 'readarray' कमांड का उपयोग किया है। इसके बाद, कोड 'लाइन्स' एरे पर पुनरावृति करता है और प्रत्येक लाइन को 'IFS' और 'रीड' कमांड का उपयोग करके तत्वों में विभाजित करता है।

उसके बाद, यह तत्वों को 2D सरणी 'सरणी' में संग्रहीत करता है और फिर प्रत्येक पंक्ति को तत्वों में विभाजित करने के लिए रीड कमांड का उपयोग करता है। अब प्रत्येक तत्व को 'सरणी' सरणी में संबंधित तत्व को सौंपा गया है और अंत में, लूप के लिए नेस्टेड का उपयोग करके 'सरणी' सरणी की सामग्री मुद्रित की जाती है।

निष्कर्ष

'रीडर्रे' कमांड बैश स्क्रिप्ट में बड़ी मात्रा में डेटा में हेरफेर करना आसान बनाता है। इस आलेख में दिए गए उदाहरणों का अनुसरण करके, आप फ़ाइलों से पंक्तियों को पढ़ने और उन्हें 2D सरणियों में संसाधित करने के लिए अपनी स्वयं की बैश स्क्रिप्ट में 'readarray' का उपयोग करना प्रारंभ कर सकते हैं।