लिनक्स में Awk के साथ तुलना ऑपरेटरों का उपयोग कैसे करें - भाग 4


पाठ की एक पंक्ति में संख्यात्मक या स्ट्रिंग मानों के साथ काम करते समय, तुलना ऑपरेटरों का उपयोग करके पाठ या तार को फ़िल्टर करना, Awk कमांड उपयोगकर्ताओं के लिए काम आता है।

ऑक सीरीज़ के इस भाग में, हम इस बात पर एक नज़र डालेंगे कि आप तुलनात्मक परिचालकों का उपयोग करके पाठ या स्ट्रिंग को कैसे फ़िल्टर कर सकते हैं। यदि आप एक प्रोग्रामर हैं, तो आपको पहले से ही तुलना ऑपरेटरों से परिचित होना चाहिए, लेकिन जो नहीं हैं, मुझे नीचे दिए गए अनुभाग में समझाएं।

Awk में तुलना ऑपरेटरों का उपयोग संख्या या तार के मूल्य की तुलना करने के लिए किया जाता है और इनमें निम्नलिखित शामिल हैं:

  1. > -
  2. से बड़ा है
  3. < - से कम
  4. > = - से अधिक या बराबर
  5. <= - से कम या बराबर
  6. == -
  7. के बराबर
  8. ! = -
  9. के बराबर नहीं
  10. some_value ~/pattern/ - अगर some_value प्रतिमान से मेल खाता है
  11. some_value! ~/pattern/ - अगर कुछ_वायु पैटर्न से मेल नहीं खाता है तो

अब जब हमने Awk में विभिन्न तुलना ऑपरेटरों को देखा है, तो आइए एक उदाहरण का उपयोग करके उन्हें बेहतर ढंग से समझें।

इस उदाहरण में, हमारे पास food_list.txt नाम की एक फ़ाइल है जो विभिन्न खाद्य पदार्थों की खरीदारी की सूची है और मैं उन खाद्य पदार्थों को चिह्नित करना चाहूंगा जिनकी मात्रा (**) जोड़कर 20 से कम या बराबर है प्रत्येक पंक्ति के अंत में।

No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

Awk में तुलना ऑपरेटरों का उपयोग करने के लिए सामान्य वाक्यविन्यास है:

# expression { actions; }

उपरोक्त लक्ष्य को प्राप्त करने के लिए, मुझे नीचे कमांड चलाना होगा:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No	Item_Name`		Quantity	Price
1	Mangoes	      		   45		$3.45
2	Apples			   25		$2.45	**
3	Pineapples		   5		$4.45	**
4	Tomatoes		   25		$3.45	**
5	Onions			   15           $1.45	**
6	Bananas			   30           $3.45	**

उपरोक्त उदाहरण में, दो महत्वपूर्ण बातें हैं:

  1. पहली अभिव्यक्ति {क्रिया; } संयोजन, $3 <= 30 {प्रिंटफ "% s\t% s\n", $0, "**"; } 30 से कम या उसके बराबर मात्रा वाली लाइनों को प्रिंट करता है और प्रत्येक पंक्ति के अंत में एक (**) जोड़ता है। $3 फ़ील्ड चर का उपयोग करके मात्रा का मान प्राप्त किया जाता है।
  2. दूसरी अभिव्यक्ति {क्रिया; } संयोजन, $3> 30 {प्रिंट $0;} लाइनों को अपरिवर्तित करता है क्योंकि उनकी मात्रा 30 से अधिक है।

एक और उदाहरण:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No	Item_Name		Quantity	Price
1	Mangoes			   45		$3.45
2	Apples			   25		$2.45
3	Pineapples		   5		$4.45	TRUE
4	Tomatoes		   25		$3.45
5	Onions			   15           $1.45	TRUE
6       Bananas	                   30           $3.45

इस उदाहरण में, हम अंत में शब्द (TRUE) के साथ 20 या उससे कम मात्रा के साथ लाइनों को इंगित करना चाहते हैं।

सारांश

यह ऑक में ऑपरेटरों की तुलना करने के लिए एक परिचयात्मक ट्यूटोरियल है, इसलिए आपको कई अन्य विकल्पों की कोशिश करने और अधिक खोज करने की आवश्यकता है।

आपके सामने आने वाली किसी भी समस्या या आपके मन में आने वाली किसी भी समस्या के लिए, तो नीचे टिप्पणी अनुभाग में एक टिप्पणी छोड़ दें। अवाक श्रृंखला के अगले भाग को पढ़ने के लिए याद रखें जहां मैं आपको यौगिक अभिव्यक्तियों के माध्यम से ले जाऊंगा।