कैसे 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.