shell - Bash script: reading numbers inside a text line -


मेरे पास CATALOG.dat फ़ाइल है जिसमें निम्न की तरह हैं:

  event_017_3916 .gz  

मुझे इस लाइन (017) की पहली संख्या निकालने की आवश्यकता है। यह प्रोग्राम दूसरे प्रोग्राम (प्रोग्राम) को लॉन्च करने के लिए आवश्यक है, जिसकी शुरूआत इनपुट नंबरों की आवश्यकता है (यानी, इसका उपयोग $ PROGRAM। सी 017) के रूप में किया जाना चाहिए। दरअसल, मुझे सिर्फ एक कमांड बनाने की जरूरत है जैसे:

  प्रोग्राम। 017  

मेरे खोल स्क्रिप्ट के अंदर मेरी समस्या यह है कि: मैं 017 कैसे पढ़ूं और इसे एक वेरिएबल के रूप में सेट करें जिसे मैं कमांड बनाने के लिए उपयोग कर सकता हूं? आपके लिए बहुत बहुत धन्यवाद!

एक awk समाधान:

  awk -F_ '{print $ 2}' फ़ाइल  

सीमांकक को _ ( -F_ ) और दूसरा ( प्रिंट $ 2 ) फ़ील्ड (जहां 017 संग्रहीत है) प्रिंट करता है

फ़ाइल को चलाने के लिए और इसे एक चर (< कोड> $ पंक्ति इसमें 017 ):

  पढ़ते समय रेखा को गूंजता "& gt; $ line" प्रोग्राम। सी $ पंक्ति पूर्ण हो गई है & lt; & Lt; (awk -F_ '{print $ 2}' फ़ाइल)  

इसके अतिरिक्त आप xargs का उपयोग निम्न आदेश के साथ कर सकते हैं:

  awk -F_ '{print $ 2}' फ़ाइल | Xargs program.C  

फ़ाइल में प्रत्येक पंक्ति के लिए प्रोग्राम xyz निष्पादित करता है, जहां xzy निकाला गया अंक है। < / P>


Comments