आपको बाहरी उपकरण जैसे sort
का उपयोग करने की आवश्यकता नहीं है, जिसका ऑप्टियो एनएस और उपयोग आपके ऑपरेटिंग सिस्टम के आधार पर भिन्न हो सकता है। बैश में $RANDOM
चर के माध्यम से एक आंतरिक यादृच्छिक संख्या जेनरेटर सुलभ है।
RANDOM=$$
या
RANDOM=$(date '+%s')
आदि: यह तो जैसे चर की स्थापना, द्वारा जनरेटर बीज के आम बात हैलेकिन निश्चित रूप से, आप भी एक उम्मीद के मुताबिक बीज क्रम में उम्मीद के मुताबिक नहीं-तो-यादृच्छिक परिणाम पाने के लिए उपयोग कर सकते हैं:
$ RANDOM=12345; echo $RANDOM
28207
$ RANDOM=12345; echo $RANDOM
28207
बेतरतीब ढंग से मैप किया गया फ़ाइल की तर्ज को पुन: व्यवस्थित करने के लिए, आप एक mapfile का उपयोग कर सरणी में फ़ाइल पढ़ सकते हैं :
$ mapfile -t a < source.txt
तो बस सरणी सूचकांक पुनर्लेखन:
$ for i in ${!a[@]}; do a[$((RANDOM+${#a[@]}))]="${a[$i]}"; unset a[$i]; done
जब एक गैर साहचर्य सरणी, सूचकांक मूल्य के आरोही क्रम में बैश स्वाभाविक रूप से आदेश तत्वों पढ़ने।
ध्यान दें कि नई प्रत्येक पंक्ति के लिए अनुक्रमणिका में उस श्रेणी के भीतर टकराव से बचने के लिए इसमें शामिल सरणी तत्वों की संख्या है। यह समाधान अभी भी असंभव है - इस बात की कोई गारंटी नहीं है कि $RANDOM
अद्वितीय संख्याएं उत्पन्न करेगा। आपको लगता है कि प्रत्येक सूचकांक के पूर्व उपयोग के लिए जाँच करता है अतिरिक्त कोड के साथ कि जोखिम को कम कर सकते हैं, या थोड़ा-स्थानांतरण के साथ जोखिम को कम:
... a[$(((RANDOM<<15)+RANDOM+${#a[@]}))]= ...
यह एक 15 बिट के बजाय एक 30 बिट अहस्ताक्षरित int में अपने सूचकांक मूल्यों बनाता है हस्ताक्षरित int।
'- यादृच्छिक-स्रोत 'काम नहीं करता है? – falstro
बस इसे अपने आप का जवाब मिला, लेकिन हाँ यह आपके साथ है - यादृच्छिक स्रोत रो, आप के लिए kudos। – Flethuseo
उत्तर इस लिंक में है: http://stackoverflow.com/questions/537191/the-sort-r-command-doesnt-sort-lines-randomly-in-linux – Flethuseo