पहला काम उस लाइन से रेट निकालना है। जीएनयू जीआरईपी (गैर-एम्बेडेड लिनक्स या सिगविन) के साथ, आप -o
विकल्प का उपयोग कर सकते हैं । आप जो भाग चाहते हैं, वह केवल अंकों वाला और उसके बाद एक %
चिह्न है। यदि आप %
स्वयं को नहीं निकालना चाहते हैं , तो आपको एक अतिरिक्त ट्रिक की आवश्यकता है: एक शून्य-चौड़ाई वाला दिखने वाला मुखर , जो कुछ भी नहीं बल्कि केवल उसी से मेल खाता है, जिसके बाद कुछ भी नहीं है %
।
command1 -p=aaa -v=bbb -i=4 | grep -o -P '[0-9]+(?=%)'
एक और संभावना है कि सेड का उपयोग किया जाए। एक लाइन में से एक हिस्से को सेड में निकालने के लिए, s
कमांड का उपयोग करें , एक रेगेक्स के साथ जो पूरी लाइन (साथ शुरू ^
होने और समाप्त होने $
) से मेल खाता है , एक समूह ( \(…\)
) में बनाए रखने के लिए । रखने के लिए समूह (ओं) की सामग्री से पूरी लाइन बदलें। सामान्य तौर पर, -n
डिफ़ॉल्ट प्रिंटिंग को बंद करने के लिए विकल्प को पास करें और p
संशोधक को प्रिंट लाइनों में डाल दें जहां निकालने के लिए कुछ है (यहां एक ही लाइन है इसलिए यह कोई फर्क नहीं पड़ता)। मिलते-जुलते पैटर्न के बाद केवल एक लाइन के हिस्से को देखें और अधिक सेड ट्रिक्स के लिए आसपास के वर्णों को प्रिंट किए बिना 'सेड' के साथ मिलान किए गए एक रेग्क्स को निकालें।
command1 -p=aaa -v=bbb -i=4 | sed 's/^.*rate(\([0-9]*\)%).*$/\1/'
पालकी की तुलना में अधिक लचीला फिर से जागृत है। Awk एक छोटी अनिवार्यता वाली भाषा में प्रत्येक पंक्ति के लिए निर्देश निष्पादित करता है। यहां दर निकालने के कई तरीके हैं; मैं दूसरे फ़ील्ड का चयन करता हूं (फ़ील्ड डिफ़ॉल्ट रूप से व्हाट्सएप द्वारा सीमांकित की जाती हैं), और इसमें सभी वर्णों को हटा दें जो एक अंक नहीं हैं।
command1 -p=aaa -v=bbb -i=4 | awk '{gsub(/[^0-9]+/, "", $2); print $2}'
अगला कदम, अब जब आपने रेट निकाला है, तो इसे एक तर्क के रूप में पास करना है command2
। उस के लिए उपकरण एक कमांड सुस्पष्टीकरण है । यदि आप एक कमांड $(…)
(डॉलर-कोष्ठक) के अंदर रखते हैं , तो इसका आउटपुट कमांड लाइन में प्रतिस्थापित किया जाता है। कमांड का आउटपुट प्रत्येक व्हाट्सएप ब्लॉक पर अलग-अलग शब्दों में विभाजित होता है, और प्रत्येक शब्द वाइल्डकार्ड पैटर्न के रूप में माना जाता है; जब तक आप ऐसा नहीं चाहते, कमांड प्रतिस्थापन के चारों ओर दोहरे उद्धरण रखें "$(…)"
:। दोहरे उद्धरण चिह्नों के साथ, कमांड के आउटपुट का उपयोग सीधे एकल पैरामीटर के रूप में किया जाता है (केवल परिवर्तन यह है कि आउटपुट के अंत में newlines हटा दिए जाते हैं)।
command2 -t "$(command1 -p=aaa -v=bbb -i=4 |
sed 's/^.*rate(\([0-9]*\)%).*$/\1/')"