हाइफ़न के बाद स्ट्रिंग का अंतिम भाग प्राप्त करें


10

क्या हाइफ़न द्वारा अलग किए गए स्ट्रिंग के अंतिम भाग को निकालने के लिए एक साधारण कमांड लाइन है? उदाहरण के लिए, मैं निकालना चाहते हैं 123से foo-bar-123

जवाबों:


23

आप बैश के पैरामीटर विस्तार का उपयोग कर सकते हैं :

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

यदि आप Awk के साथ एक और प्रक्रिया का उपयोग करना चाहते हैं:

echo "foo-bar-123" | awk -F- '{print $NF}'

या, यदि आप Sed पसंद करते हैं:

echo "foo-bar-123" | sed 's/.*-//'

एक हल्का बाहरी प्रक्रिया, जैसा कि ग्लेन जैकमैन का सुझाव है cut:

cut -d- -f3 <<< "$string"

शेल पैरामीटर विस्तार सबसे अच्छा जवाब है। एक हल्का बाहरी उपकरण है cut:cut -d- -f3 <<< "$string"
ग्लेन जैकमैन

1
@glennjackman - re cut:; वास्तव में लेकिन केवल तभी जब अंतिम फ़ील्ड की संख्या ज्ञात हो (जैसा कि प्रश्न थोड़ा अस्पष्ट है: क्या अंतिम भाग निकालने के लिए एक सरल कमांड लाइन है ...? )
don_crissti

2
@don_crissti, वास्तव में। एक कर सकता था rev <<< "$string" | cut -d- -f1 | rev, लेकिन फिर हम परम की सहजता से दूर हो रहे हैं। विस्तार।
ग्लेन जैकमैन


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.