Grep का उपयोग करके एक पंक्ति में अंतिम आइटम ढूँढना


13

मैं एक विशिष्ट पैटर्न के लिए grep का उपयोग करके अंतिम शब्द या वाक्यांश लेने का प्रयास कर रहा हूं। इस उदाहरण में, यह अंतिम अल्पविराम से पंक्ति के अंत तक होगा:

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

और इसलिए उस लाइन के लिए वांछित आउटपुट "ग्रेट वैल्यू" होगा। सभी रेखाएँ अलग-अलग लंबाई की होती हैं, लेकिन हमेशा अंतिम शब्दों से पहले एक ही अल्पविराम होता है।

मूल रूप से, मैं अंतिम कॉमा से लाइन के अंत तक उत्पादन करना चाहूंगा। धन्यवाद!


9
क्या आपने उपयोग करने पर विचार किया है awk -F, '{print $NF}'?
इस्पातधर

लाइन पर अंतिम आइटम प्राप्त करना आसान काम है, लेकिन उस लाइन को कैसे पहचाना जाना चाहिए? मेरा मतलब है, कैसे एक कमांड या स्क्रिप्ट लाइन को देख सकता है, और कह सकता है "हां, यह एक है"? पैटर्न क्या है जो उस रेखा की पहचान करता है?
सर्गी कोलोडियाज़नी

5
grepइस काम के लिए उपकरण नहीं है।
Kusalananda

जवाबों:


27

यहाँ:

grep -o '[^,]\+$'
  • [^,]\+एक या अधिक वर्णों से मेल खाता ,है जो पंक्ति के अंत में नहीं हैं ( $)

  • -o केवल मिलान किए गए भाग को प्रिंट करता है

उदाहरण:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

एक जादू की तरह काम किया! मैं "के संयोजन का उपयोग करने की कोशिश कर रहा था।" और अन्य अभिव्यक्तियों से पहले लेकिन यह बहुत बेहतर काम करता है, बहुत सराहना की जाती है।
reversebottle

हम्म, मैंने इस्तेमाल किया है -Eoऔर फिर बचने की जरूरत नहीं है+
बाल्ड्रिक

@ बाल्ड्रिक ईआरई को -Eसक्षम बनाता है, इसीलिए।
हेमायल

@heemayl हाँ, मुझे पता है क्यों। मैं इसका उपयोग करने के लिए जाता हूं क्योंकि यह एक अधिक सामान्य रेगेक्स सिंटेक्स है
बाल्ड्रिक

15

हमेशा एक awkसमाधान देखना पसंद है तो यहाँ है (उचित समाधान उत्कीर्ण!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

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