लिनक्स में Awk के साथ मिश्रित अभिव्यक्तियों का उपयोग कैसे करें - भाग 5
सभी के साथ, हम साधारण अभिव्यक्तियों को देख रहे हैं, जब जाँच की जाती है कि कोई शर्त पूरी हुई है या नहीं। क्या होगा यदि आप किसी विशेष स्थिति की जांच के लिए अधिक अभिव्यक्ति का उपयोग करना चाहते हैं?
इस लेख में, हम इस बात पर एक नज़र डालेंगे कि आप पाठ या तार को छानते समय किसी स्थिति की जाँच करने के लिए यौगिक अभिव्यक्तियों के रूप में संदर्भित कई अभिव्यक्तियों को कैसे जोड़ सकते हैं।
Awk में, यौगिक अभिव्यक्तियाँ &&
को (और)
और ||
के रूप में संदर्भित करके (या) के रूप में निर्मित की जाती हैं।
कंपाउंड ऑपरेटर।
यौगिक अभिव्यक्तियों के लिए सामान्य वाक्यविन्यास है:
( first_expression ) && ( second_expression )
यहां, संपूर्ण अभिव्यक्ति को सत्य बनाने के लिए first_expression
और second_expression
सही होना चाहिए।
( first_expression ) || ( second_expression)
यहां, एक अभिव्यक्ति या तो first_expression
या second_expression
को पूरी अभिव्यक्ति के लिए सही होना चाहिए।
सावधानी: हमेशा कोष्ठक को शामिल करना याद रखें।
भावों को तुलनात्मक संचालकों का उपयोग करके बनाया जा सकता है जिन्हें हमने awk श्रृंखला के भाग 4 में देखा था।
आइए अब हम नीचे दिए गए उदाहरण का उपयोग करके स्पष्ट समझ प्राप्त करें:
इस उदाहरण में, एक पाठ फ़ाइल है जिसका नाम tecmint_deals.txt
है, जिसमें कुछ अद्भुत यादृच्छिक Tecmint सौदों की सूची है, इसमें सौदे का नाम, मूल्य और प्रकार शामिल है।
No Name Price Type 1 Mac_OS_X_Cleanup_Suite $9.99 Software 2 Basics_Notebook $14.99 Lifestyle 3 Tactical_Pen $25.99 Lifestyle 4 Scapple $19.00 Unknown 5 Nano_Tool_Pack $11.99 Unknown 6 Ditto_Bluetooth_Altering_Device $33.00 Tech 7 Nano_Prowler_Mini_Drone $36.99 Tech
यह कहें कि हम केवल प्रिंट और फ्लैग डील चाहते हैं जो $20 से ऊपर की हो और प्रत्येक कोड के अंत में (**)
साइन का उपयोग करके "Tech" टाइप करें।
हमें नीचे कमांड चलाने की आवश्यकता होगी।
# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 6 Ditto_Bluetooth_Altering_Device $33.00 Tech * 7 Nano_Prowler_Mini_Drone $36.99 Tech *
इस उदाहरण में, हमने यौगिक अभिव्यक्ति में दो भावों का उपयोग किया है:
- पहली अभिव्यक्ति, ($3 ~/^\$$2 .2-9 ईन्सिंग0-9 ग्रेडिंगसाइड। डीयू .0-9 ग्रेडिंग ईएस0-9 ग्रेडिंग ऑक्स); $20 से ऊपर की कीमत वाले सौदों के लिए लाइनों की जाँच करता है, और यह केवल तभी सच होता है जब $3 का मूल्य जो कि मूल्य पैटर्न से मेल खाता हो/^\\$[] [0-9] $/
- और दूसरी अभिव्यक्ति, ($4 == "टेक"); यह जाँच करता है कि सौदा "टेक" का है या नहीं और यह केवल तभी सच है जब $4 का मूल्य "टेक" के बराबर हो।
याद रखें, एक पंक्ति को केवल (**)
के साथ चिह्नित किया जाएगा, यदि पहली अभिव्यक्ति और दूसरी अभिव्यक्ति सत्य हैं जैसा कि &&
ऑपरेटर के सिद्धांत के अनुसार है।
सारांश
कुछ शर्तों को हमेशा आपके लिए जो आप चाहते हैं उससे मेल खाने के लिए यौगिक अभिव्यक्तियों के निर्माण की आवश्यकता होती है। जब आप तुलना और यौगिक अभिव्यक्ति संचालकों के उपयोग को समझते हैं, तो कुछ कठिन परिस्थितियों के आधार पर पाठ या तार को फ़िल्टर करना आसान हो जाएगा।
आशा है कि आपको यह मार्गदर्शिका उपयोगी और किसी भी प्रश्न या अतिरिक्त के लिए मिलेगी, हमेशा एक टिप्पणी छोड़ना याद रखें और आपकी चिंता उसी के अनुसार हल हो जाएगी।