कैसे bash में सूची से तत्व प्राप्त करने के लिए?


40

यहाँ एक सूची है:

List = "abcd 1234 jvm something"

सभी सूची को लूप किए बिना दूसरा तत्व "1234" कैसे प्राप्त करें?

जवाबों:


50

समान चिह्न के बीच कोई रिक्त स्थान नहीं

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

कुछ अन्य तरीके, हालांकि शेल के इंटर्नल का उपयोग करने के रूप में कुशल नहीं हैं

$ echo $List | cut -d" " -f2
1234
$  echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234

धन्यवाद। क्या आप कृपया कोड में कुछ टिप्पणी देंगे?
स्पॉन्स्ट

1
मेरा मतलब दूसरी लाइन से है।
स्पॉन्स्ट

17
@Spawn set -- $somethingविभाजन $somethingपर $IFSस्थितीय चर के चरित्र (डिफ़ॉल्ट अंतरिक्ष से) और प्रदान विभाजित भागों $1, $2...
बेंजामिन Bannier

43

बस घोस्टडॉग के उत्तर के पूरक के लिए: आप $Listतत्वों को एक सरणी में रख सकते हैं और वहां से विशिष्ट सूची तत्व तक पहुंच सकते हैं

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

ध्यान दें कि सरणी सूचकांकों की गिनती 0,1,2, ... है।

यह कई नए चर के साथ खोल पर्यावरण को प्रदूषित नहीं करने का लाभ है।


यह अच्छा है। :-)
स्पॉनस्ट

1
कोई ज़रूरत नहीं है echo: arr=($List)
user31894

@ghostdog संभवतः बाध्यकारी व्यवहार, संपादित।
बेंजामिन बैनियर

@BenjaminBannier, आप कई तत्वों का चयन कैसे कर सकते हैं। क्या कुछ वाक्य रचना जैसे $ {गिरफ्तार [1,2,3]} $ (यह नहीं है, क्योंकि मैंने कोशिश की थी, लेकिन इस तरह) या क्या मुझे लूप के लिए उपयोग करने की आवश्यकता है।
क्वॉथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.