खोज…


परिचय

एक awk में पैटर्न और एक्शन होते हैं, जो कर्ली कोष्ठक में संलग्न होते हैं, यदि पैटर्न से मेल खाते हों। सबसे बुनियादी पैटर्न खाली पैटर्न है, जो किसी भी रिकॉर्ड से मेल खाता है। सबसे बुनियादी कार्रवाई खाली कार्रवाई है, जो { print } बराबर है, जो बदले में, { print $0 } बराबर है। यदि पैटर्न और क्रिया दोनों खाली हैं, तो awk बस कुछ नहीं करेगा।

उदाहरण के लिए, निम्न प्रोग्राम केवल इसके इनपुट को प्रतिध्वनित करेगा:

awk '{ print }' /etc/passwd

चूंकि { print } डिफ़ॉल्ट क्रिया है, और चूंकि एक सही मूल्य किसी भी रिकॉर्ड से मेल खाता है, इसलिए उस कार्यक्रम को फिर से लिखा जा सकता है:

awk '1' /etc/passwd

सबसे सामान्य प्रकार का पैटर्न संभवतः स्लैश में संलग्न एक नियमित अभिव्यक्ति है। निम्न कार्यक्रम में सभी अभिलेखों को मुद्रित किया जाएगा, जिनमें अक्षर o कम से कम दो बाद की घटनाएं शामिल हैं, उदाहरण के लिए:

awk '/oo+/ { print }' /etc/passwd

हालांकि, आप पैटर्न के रूप में मनमाने ढंग से अभिव्यक्ति का उपयोग कर सकते हैं। निम्न कार्यक्रम उदाहरण के लिए समूह शून्य (फ़ील्ड चार) में उपयोगकर्ताओं के नाम (फ़ील्ड एक) प्रिंट करता है:

awk -F: '$4 == 0 { print $1 }' /etc/passwd

बिल्कुल मिलान करने के बजाय, आप एक नियमित अभिव्यक्ति के खिलाफ भी मैच कर सकते हैं। निम्न प्रोग्राम एक समूह के सभी उपयोगकर्ताओं के नाम को उसके समूह आईडी में कम से कम एक शून्य के साथ प्रिंट करता है:

awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd

लंबाई द्वारा फ़िल्टर लाइनें

यह पैटर्न आपको इसकी लंबाई के आधार पर लाइनों को फ़िल्टर करने की अनुमति देगा

$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE

$awk 'length($0) > 4 { print $0 }' file
AAAAA
$

फिर भी, पैटर्न अगले कोड ब्लॉक को निष्पादित करने की अनुमति देगा, फिर, जैसा कि AWK के लिए डिफ़ॉल्ट कार्रवाई वर्तमान लाइन {print} , हम इसे निष्पादित करते समय एक ही परिणाम देखेंगे:

$awk 'length($0) > 4 ' file
AAAAA


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow