প্রথম কাজটি হ'ল রেখাটি থেকে হারটি বের করা। জিএনইউ গ্রেপ (অ-এমবেডড লিনাক্স বা সাইগউইন) এর সাহায্যে আপনি -o
বিকল্পটি ব্যবহার করতে পারেন । আপনি যে অংশটি চান তা হ'ল কেবল অঙ্কগুলি এবং তার পরে একটি %
চিহ্ন। যদি আপনি %
নিজেই এটি বের করতে না চান তবে আপনার একটি অতিরিক্ত ট্রিক প্রয়োজন: একটি শূন্য প্রস্থের বর্ণনাহী দাবী , যা কিছুই অনুসরণ করে না কেবল তখনই যদি কিছুই অনুসরণ না করা হয় %
।
command1 -p=aaa -v=bbb -i=4 | grep -o -P '[0-9]+(?=%)'
আর একটি সম্ভাবনা রয়েছে সেড ব্যবহার করা। সেডে একটি লাইনের একটি অংশ বের করতে, s
কমান্ডটি ব্যবহার করুন , একটি রেইগেক্স সহ পুরো লাইনের সাথে মেলে (শুরু করে ^
এবং শেষ হবে $
), অংশটি একটি গ্রুপে ধরে রাখার জন্য \(…\)
। গোষ্ঠীটির গোষ্ঠীগুলির সামগ্রীতে সম্পূর্ণ লাইনটি প্রতিস্থাপন করুন। সাধারণভাবে, -n
ডিফল্ট মুদ্রণ বন্ধ করার বিকল্পটি পাস করুন এবং p
মুদ্রকগুলিকে মুদ্রণের জন্য প্রিন্ট করুন যেখানে সেখানে এক্সট্র্যাক্ট করার মতো কিছু রয়েছে (এখানে একটি একক লাইন রয়েছে যাতে এটি বিবেচনা করে না)। দেখুন একটি মানানসই প্যাটার্ন পর একটি লাইন একমাত্র অংশ ফিরুন এবং একটি Regex পার্শ্ববর্তী অক্ষর মুদ্রণ ছাড়া সঙ্গে 'sed' মিলেছে নিষ্কাশন হচ্ছে আরও কিন্তু ঠাট জন্য।
command1 -p=aaa -v=bbb -i=4 | sed 's/^.*rate(\([0-9]*\)%).*$/\1/'
সেডের চেয়ে আবার আরও নমনীয়, অদ্ভুত। আওক প্রতিটি লাইনের জন্য একটি ছোট অগত্যা ভাষায় নির্দেশাবলী কার্যকর করে। এখানে হারটি তোলার অনেকগুলি উপায় রয়েছে; আমি দ্বিতীয় ক্ষেত্রগুলি নির্বাচন করি (ক্ষেত্রগুলি ডিফল্টরূপে সাদা স্পেসে সীমিত করা হয়) এবং এতে সমস্ত অক্ষর মুছে ফেলা হয় যা একটি অঙ্ক নয়।
command1 -p=aaa -v=bbb -i=4 | awk '{gsub(/[^0-9]+/, "", $2); print $2}'
পরবর্তী পদক্ষেপ, এখন আপনি যে হারটি বের করেছেন, তা হ'ল যুক্তি হিসাবে এটি পাস করা command2
। এটির জন্য সরঞ্জামটি হ'ল একটি কমান্ড সাসব্যাটিউশন । আপনি যদি কমান্ডটি ভিতরে রাখেন $(…)
(ডলার-প্রথম বন্ধনী), এর আউটপুট কমান্ড লাইনে প্রতিস্থাপিত হবে। কমান্ডের আউটপুট প্রতিটি হোয়াইটস্পেস ব্লকে পৃথক শব্দে বিভক্ত হয় এবং প্রতিটি শব্দ একটি ওয়াইল্ডকার্ড প্যাটার্ন হিসাবে বিবেচিত হয়; যদি না আপনি এই ঘটতে করতে চান, কমান্ড প্রতিকল্পন প্রায় ডবল কোট করা: "$(…)"
। ডাবল উদ্ধৃতি সহ, কমান্ডের আউটপুটটি সরাসরি একক প্যারামিটার হিসাবে ব্যবহৃত হয় (একমাত্র রূপান্তরটি আউটপুটটির শেষে থাকা নিউলাইনগুলি সরিয়ে ফেলা হয়)।
command2 -t "$(command1 -p=aaa -v=bbb -i=4 |
sed 's/^.*rate(\([0-9]*\)%).*$/\1/')"