AWK - त्वरित गाइड

AWK एक व्याख्या की गई प्रोग्रामिंग भाषा है। यह बहुत शक्तिशाली है और विशेष रूप से टेक्स्ट प्रोसेसिंग के लिए डिज़ाइन किया गया है। इसका नाम इसके लेखकों के पारिवारिक नामों से लिया गया है -Alfred Aho, Peter Weinberger, and Brian Kernighan.

नि: शुल्क सॉफ्टवेयर फाउंडेशन (एफएसएफ) द्वारा जीएनयू / लिनक्स वितरित किए जाने वाले AWK का संस्करण; यह अक्सर के रूप में जाना जाता हैGNU AWK.

AWK के प्रकार

निम्नलिखित AWK के प्रकार हैं -

  • AWK - एटी एंड टी प्रयोगशाला से मूल AWK।

  • NAWK - एटी एंड टी प्रयोगशाला से AWK के नए और बेहतर संस्करण।

  • GAWK- यह GNU AWK है। सभी GNU / Linux वितरण GAWK जहाज। यह AWK और NAWK के साथ पूरी तरह से संगत है।

AWK के विशिष्ट उपयोग

कार्यों का असंख्य AWK के साथ किया जा सकता है। नीचे सूचीबद्ध उनमें से कुछ ही हैं -

  • टेक्स्ट प्रोसेसिंग,
  • स्वरूपित पाठ रिपोर्ट तैयार करना,
  • अंकगणितीय संचालन करना,
  • स्ट्रिंग संचालन करना, और कई और।

यह अध्याय बताता है कि अपने GNU / Linux सिस्टम पर AWK वातावरण कैसे सेट करें।

पैकेज मैनेजर का उपयोग करना

आमतौर पर, AWK अधिकांश GNU / लिनक्स वितरण पर डिफ़ॉल्ट रूप से उपलब्ध है। आप उपयोग कर सकते हैंwhichयह जाँचने के लिए कि यह आपके सिस्टम पर मौजूद है या नहीं। यदि आपके पास AWK नहीं है, तो इसे एडवांस पैकेज टूल का उपयोग करके डेबियन आधारित GNU / Linux पर इंस्टॉल करें(APT) पैकेज प्रबंधक निम्नानुसार है -

[jeryy]$ sudo apt-get update [jeryy]$ sudo apt-get install gawk

इसी तरह, आरपीएम आधारित जीएनयू / लिनक्स पर एडब्ल्यूके स्थापित करने के लिए, येल्डॉग अपडेटेटर संशोधक का उपयोग करें yum पैकेज प्रबंधक निम्नानुसार है -

[root]# yum install gawk

स्थापना के बाद, यह सुनिश्चित करें कि AWK कमांड लाइन के माध्यम से सुलभ है।

[jerry]$ which awk

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

/usr/bin/awk

स्रोत कोड से स्थापना

चूंकि GNU AWK GNU परियोजना का एक हिस्सा है, इसलिए इसका स्रोत कोड मुफ्त डाउनलोड के लिए उपलब्ध है। हमने पहले ही देखा है कि पैकेज मैनेजर का उपयोग करके AWK कैसे स्थापित करें। आइए अब समझते हैं कि अपने सोर्स कोड से AWK कैसे इंस्टॉल करें।

निम्न स्थापना किसी भी GNU / Linux सॉफ्टवेयर पर लागू होती है, और अधिकांश अन्य स्वतंत्र रूप से उपलब्ध कार्यक्रमों के लिए भी। यहां संस्थापन चरण हैं -

Step 1- प्रामाणिक स्थान से स्रोत कोड डाउनलोड करें। कमांड-लाइन उपयोगिताwget इस उद्देश्य को पूरा करता है।

[jerry]$ wget http://ftp.gnu.org/gnu/gawk/gawk-4.1.1.tar.xz

Step 2 - डीकंप्रेस और डाउनलोड किए गए स्रोत कोड को निकालें।

[jerry]$ tar xvf gawk-4.1.1.tar.xz

Step 3 - निर्देशिका में बदलें और कॉन्फ़िगर चलाएँ।

[jerry]$ ./configure

Step 4 - सफल होने पर, configureमेकफाइल उत्पन्न करता है। स्रोत कोड संकलित करने के लिए, जारी करेंmake आदेश।

[jerry]$ make

Step 5- बिल्ड साफ है यह सुनिश्चित करने के लिए आप परीक्षण सूट चला सकते हैं। यह एक वैकल्पिक कदम है।

[jerry]$ make check

Step 6- अंत में, AWK इंस्टॉल करें। सुनिश्चित करें कि आपके पास सुपर-उपयोगकर्ता विशेषाधिकार हैं।

[jerry]$ sudo make install

बस इतना ही! आपने AWK को सफलतापूर्वक संकलित और स्थापित किया है। इसे निष्पादित करके सत्यापित करेंawk आदेश निम्नानुसार है -

[jerry]$ which awk

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

/usr/bin/awk

एक विशेषज्ञ AWK प्रोग्रामर बनने के लिए, आपको इसके इंटर्न को जानना होगा। AWK एक साधारण वर्कफ़्लो का अनुसरण करता है - पढ़ें, निष्पादित करें और दोहराएं। निम्नलिखित चित्र AWK के वर्कफ़्लो को दर्शाता है -

पढ़ें

AWK इनपुट स्ट्रीम (फ़ाइल, पाइप, या स्टडिन) से एक पंक्ति पढ़ता है और इसे मेमोरी में स्टोर करता है।

निष्पादित

सभी AWK कमांड को इनपुट पर क्रमिक रूप से लागू किया जाता है। डिफ़ॉल्ट रूप से AWK हर लाइन पर कमांड निष्पादित करता है। हम पैटर्न प्रदान करके इसे प्रतिबंधित कर सकते हैं।

दोहराना

यह प्रक्रिया तब तक दोहराती है जब तक कि फाइल अपने अंत तक नहीं पहुंच जाती।

कार्यक्रम की संरचना

आइए अब हम AWK की कार्यक्रम संरचना को समझते हैं।

BEGIN ब्लॉक

BEGIN ब्लॉक का सिंटैक्स इस प्रकार है -

Syntax

BEGIN {awk-commands}

BEGIN ब्लॉक को प्रोग्राम स्टार्ट-अप में निष्पादित किया जाता है। यह केवल एक बार निष्पादित होता है। चरों को शुरू करने के लिए यह अच्छी जगह है। BEGIN एक AWK कीवर्ड है और इसलिए इसे अपर-केस में होना चाहिए। कृपया ध्यान दें कि यह ब्लॉक वैकल्पिक है।

बॉडी ब्लॉक

बॉडी ब्लॉक का सिंटैक्स इस प्रकार है -

Syntax

/pattern/ {awk-commands}

बॉडी ब्लॉक हर इनपुट लाइन पर AWK कमांड लगाता है। डिफ़ॉल्ट रूप से, AWK हर लाइन पर कमांड निष्पादित करता है। हम पैटर्न प्रदान करके इसे प्रतिबंधित कर सकते हैं। ध्यान दें कि बॉडी ब्लॉक के लिए कोई कीवर्ड नहीं हैं।

END ब्लॉक

END ब्लॉक का सिंटैक्स इस प्रकार है -

Syntax

END {awk-commands}

कार्यक्रम के अंत में END ब्लॉक निष्पादित होता है। END एक AWK कीवर्ड है और इसलिए इसे अपर-केस में होना चाहिए। कृपया ध्यान दें कि यह ब्लॉक वैकल्पिक है।

एक फाइल बनाते हैं marks.txt जिसमें सीरियल नंबर, छात्र का नाम, विषय का नाम और प्राप्त अंकों की संख्या शामिल है।

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

अब हम AWK स्क्रिप्ट का उपयोग करके हेडर के साथ फ़ाइल सामग्री प्रदर्शित करते हैं।

Example

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

जब इस कोड को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Output

Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

शुरुआत में, AWK BEGIN ब्लॉक से हेडर प्रिंट करता है। फिर बॉडी ब्लॉक में, यह एक फाइल से एक लाइन पढ़ता है और AWK के प्रिंट कमांड को निष्पादित करता है जो मानक आउटपुट स्ट्रीम पर सामग्री को प्रिंट करता है। यह प्रक्रिया तब तक दोहराती है जब तक फ़ाइल अंत तक नहीं पहुंच जाती।

AWK उपयोग करने के लिए सरल है। हम AWK कमांड को या तो सीधे कमांड लाइन से या टेक्स्ट फाइल के रूप में AWK कमांड प्रदान कर सकते हैं।

AWK कमांड लाइन

जैसा कि दिखाया गया है हम कमांड लाइन पर एक उद्धरण के भीतर एक AWK कमांड निर्दिष्ट कर सकते हैं -

awk [options] file ...

उदाहरण

एक पाठ फ़ाइल पर विचार करें marks.txt निम्नलिखित सामग्री के साथ -

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

आइए हम AWK का उपयोग करके फ़ाइल की पूरी सामग्री को निम्नानुसार प्रदर्शित करते हैं -

Example

[jerry]$ awk '{print}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

AWK कार्यक्रम फ़ाइल

हम दिखाए गए अनुसार स्क्रिप्ट फ़ाइल में AWK कमांड प्रदान कर सकते हैं -

awk [options] -f file ....

सबसे पहले, एक टेक्स्ट फ़ाइल बनाएं command.awk नीचे दिखाए अनुसार AWK कमांड युक्त -

{print}

अब हम AWK को टेक्स्ट फाइल से कमांड पढ़ने और कार्रवाई करने का निर्देश दे सकते हैं। यहां, हम उसी परिणाम को प्राप्त करते हैं जैसा कि उपरोक्त उदाहरण में दिखाया गया है।

Example

[jerry]$ awk -f command.awk marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89

AWK मानक विकल्प

AWK निम्नलिखित मानक विकल्पों का समर्थन करता है जो कमांड लाइन से प्रदान किए जा सकते हैं।

-V विकल्प

यह विकल्प एक वैरिएबल के लिए एक मान प्रदान करता है। यह कार्यक्रम के निष्पादन से पहले असाइनमेंट की अनुमति देता है। निम्न उदाहरण -v विकल्प के उपयोग का वर्णन करता है।

Example

[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Name = Jerry

--Dump- चर [= file] विकल्प

यह वैश्विक चर की छंटनी सूची और उनके अंतिम मूल्यों को दर्ज करने के लिए प्रिंट करता है। डिफ़ॉल्ट फ़ाइल हैawkvars.out

Example

[jerry]$ awk --dump-variables '' [jerry]$ cat awkvars.out

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

Output

ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"

Thehelp विकल्प

यह विकल्प मानक आउटपुट पर मदद संदेश प्रिंट करता है।

Example

[jerry]$ awk --help

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
   -f progfile                --file=progfile
   -F fs                      --field-separator=fs
   -v var=val                 --assign=var=val
Short options : GNU long options: (extensions)
   -b                         --characters-as-bytes
   -c                         --traditional
   -C                         --copyright
   -d[file]                   --dump-variables[=file]
   -e 'program-text'          --source='program-text'
   -E file                    --exec=file
   -g                         --gen-pot
   -h                         --help
   -L [fatal]                 --lint[=fatal]
   -n                         --non-decimal-data
   -N                         --use-lc-numeric
   -O                         --optimize
   -p[file]                   --profile[=file]
   -P                         --posix
   -r                         --re-interval
   -S                         --sandbox
   -t                         --lint-old
   -V                         --version

--Lint [= घातक] विकल्प

यह विकल्प गैर-पोर्टेबल या संदिग्ध निर्माणों की जांच करने में सक्षम बनाता है। जब एक तर्कfatalप्रदान किया जाता है, यह चेतावनी संदेशों को त्रुटियों के रूप में मानता है। निम्न उदाहरण यह प्रदर्शित करता है -

Example

[jerry]$ awk --lint '' /bin/ls

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!

The --posix विकल्प

यह विकल्प सख्त POSIX संगतता पर मुड़ता है, जिसमें सभी सामान्य और gawk- विशिष्ट एक्सटेंशन अक्षम हैं।

- प्रॉफ़िटेबल [= फ़ाइल] विकल्प

यह विकल्प फ़ाइल में प्रोग्राम का एक सुंदर-मुद्रित संस्करण उत्पन्न करता है। डिफ़ॉल्ट फ़ाइल हैawkprof.out। नीचे सरल उदाहरण यह दिखाता है -

Example

[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} END{printf"---|Footer|---\n"}' marks.txt > /dev/null [jerry]$ cat awkprof.out

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

# gawk profile, created Sun Oct 26 19:50:48 2014

   # BEGIN block(s)

   BEGIN {
      printf "---|Header|--\n"
   }

   # Rule(s) {
      print $0
   }

   # END block(s)

   END {
      printf "---|Footer|---\n"
   }

The - विरोधाभासी विकल्प

यह विकल्प सभी gawk- विशिष्ट एक्सटेंशन को अक्षम करता है।

--Version विकल्प

यह विकल्प AWK प्रोग्राम की संस्करण जानकारी प्रदर्शित करता है।

Example

[jerry]$ awk --version

जब इस कोड को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Output

GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.

इस अध्याय में कई उपयोगी AWK कमांड और उनके उपयुक्त उदाहरणों का वर्णन किया गया है। एक पाठ फ़ाइल पर विचार करेंmarks.txt निम्नलिखित सामग्री के साथ संसाधित किया जाना है -

1) Amit     Physics   80
2) Rahul    Maths     90
3) Shyam    Biology   87
4) Kedar    English   85
5) Hari     History   89

मुद्रण स्तंभ या फ़ील्ड

आप AWK को इनपुट क्षेत्र से केवल कुछ कॉलम प्रिंट करने के लिए निर्देश दे सकते हैं। निम्न उदाहरण यह प्रदर्शित करता है -

उदाहरण

[jerry]$ awk '{print $3 "\t" $4}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Physics   80
Maths     90
Biology   87
English   85
History   89

फ़ाइल में marks.txt, तीसरे कॉलम में विषय का नाम होता है और चौथे कॉलम में किसी विशेष विषय में प्राप्त अंक होते हैं। हमें AWK प्रिंट कमांड का उपयोग करके इन दो कॉलम को प्रिंट करें। उपरोक्त उदाहरण में,$3 and $4 इनपुट रिकॉर्ड से क्रमशः तीसरे और चौथे क्षेत्र का प्रतिनिधित्व करते हैं।

मुद्रण सभी लाइनों

डिफ़ॉल्ट रूप से, AWK पैटर्न से मेल खाने वाली सभी लाइनों को प्रिंट करता है।

उदाहरण

[jerry]$ awk '/a/ {print $0}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

2) Rahul    Maths     90
3) Shyam    Biology   87
4) Kedar    English   85
5) Hari     History   89

उपरोक्त उदाहरण में, हम फॉर्म पैटर्न खोज रहे हैं a। जब एक पैटर्न मैच सफल होता है, तो यह बॉडी ब्लॉक से एक कमांड निष्पादित करता है। बॉडी ब्लॉक की अनुपस्थिति में - डिफ़ॉल्ट कार्रवाई की जाती है जो रिकॉर्ड को प्रिंट करती है। इसलिए, निम्न कमांड एक ही परिणाम उत्पन्न करता है -

उदाहरण

[jerry]$ awk '/a/' marks.txt

पैटर्न द्वारा मुद्रण कॉलम

जब एक पैटर्न मैच सफल होता है, तो AWK डिफ़ॉल्ट रूप से पूरे रिकॉर्ड को प्रिंट करता है। लेकिन आप AWK को केवल कुछ क्षेत्रों को प्रिंट करने के लिए निर्देश दे सकते हैं। उदाहरण के लिए, निम्न उदाहरण तीसरे और चौथे क्षेत्र को प्रिंट करता है जब एक पैटर्न मैच सफल होता है।

उदाहरण

[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Maths    90
Biology  87
English  85
History  89

किसी भी क्रम में मुद्रण स्तंभ

आप किसी भी क्रम में कॉलम प्रिंट कर सकते हैं। उदाहरण के लिए, निम्न उदाहरण चौथे कॉलम को प्रिंट करता है और उसके बाद तीसरा कॉलम।

उदाहरण

[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

उत्पादन

90   Maths
87   Biology
85   English
89   History

गिनती और मुद्रण मिलान पैटर्न

आइए एक उदाहरण देखें जहां आप उन पंक्तियों की संख्या को गिन और प्रिंट कर सकते हैं जिनके लिए एक पैटर्न मैच सफल हुआ।

उदाहरण

[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Count = 4

इस उदाहरण में, हम काउंटर का मान बढ़ाते हैं जब एक पैटर्न मैच सफल होता है और हम इस मान को END ब्लॉक में प्रिंट करते हैं। ध्यान दें कि अन्य प्रोग्रामिंग भाषाओं के विपरीत, इसका उपयोग करने से पहले एक चर घोषित करने की आवश्यकता नहीं है।

18 से अधिक वर्णों के साथ मुद्रण लाइनें

आइए हम केवल उन पंक्तियों को प्रिंट करें जिनमें 18 से अधिक वर्ण हैं।

उदाहरण

[jerry]$ awk 'length($0) > 18' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

3) Shyam   Biology   87
4) Kedar   English   85

AWK एक बिल्ट-इन प्रदान करता है length फ़ंक्शन जो स्ट्रिंग की लंबाई लौटाता है। $0चर संपूर्ण रेखा को संग्रहीत करता है और बॉडी ब्लॉक की अनुपस्थिति में, डिफ़ॉल्ट कार्रवाई की जाती है, अर्थात, प्रिंट कार्रवाई। इसलिए, यदि किसी रेखा में 18 से अधिक वर्ण हैं, तो तुलना परिणाम सही है और रेखा मुद्रित हो जाती है।

AWK कई अंतर्निर्मित चर प्रदान करता है। वे AWK स्क्रिप्ट लिखते समय एक महत्वपूर्ण भूमिका निभाते हैं। यह अध्याय अंतर्निहित चर के उपयोग को प्रदर्शित करता है।

मानक AWK चर

मानक AWK चर नीचे चर्चा कर रहे हैं।

argc

इसका तात्पर्य है कमांड लाइन पर उपलब्ध कराए गए तर्कों की संख्या।

Example

[jerry]$ awk 'BEGIN {print "Arguments =", ARGC}' One Two Three Four

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Arguments = 5

लेकिन AWK 5 क्यों दिखाता है जब आप केवल 4 तर्क पारित करते हैं? अपना संदेह मिटाने के लिए बस निम्नलिखित उदाहरण की जाँच करें।

ARGV

यह एक सरणी है जो कमांड-लाइन तर्कों को संग्रहीत करता है। सरणी का वैध सूचकांक 0 से ARGC-1 तक है।

Example

[jerry]$ awk 'BEGIN { 
   for (i = 0; i < ARGC - 1; ++i) { 
      printf "ARGV[%d] = %s\n", i, ARGV[i] 
   } 
}' one two three four

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

ARGV[0] = awk
ARGV[1] = one
ARGV[2] = two
ARGV[3] = three

CONVFMT

यह संख्याओं के लिए रूपांतरण प्रारूप का प्रतिनिधित्व करता है। इसका डिफ़ॉल्ट मान है%.6g

Example

[jerry]$ awk 'BEGIN { print "Conversion Format =", CONVFMT }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Conversion Format = %.6g

घेरना

यह पर्यावरण चर का एक सहयोगी सरणी है।

Example

[jerry]$ awk 'BEGIN { print ENVIRON["USER"] }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

jerry

अन्य पर्यावरण चर के नाम खोजने के लिए, का उपयोग करें env आदेश।

फ़ाइल का नाम

यह वर्तमान फ़ाइल नाम का प्रतिनिधित्व करता है।

Example

[jerry]$ awk 'END {print FILENAME}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

marks.txt

कृपया ध्यान दें कि BEGIN ब्लॉक में FILENAME अपरिभाषित है।

एफएस

यह (इनपुट) क्षेत्र विभाजक का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मान अंतरिक्ष है। आप इसे बदलकर भी उपयोग कर सकते हैं-F कमांड लाइन विकल्प।

Example

[jerry]$ awk 'BEGIN {print "FS = " FS}' | cat -vte

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

FS =  $

एनएफ

यह वर्तमान रिकॉर्ड में फ़ील्ड की संख्या का प्रतिनिधित्व करता है। उदाहरण के लिए, निम्न उदाहरण केवल उन पंक्तियों को प्रिंट करता है जिनमें दो से अधिक फ़ील्ड हैं।

Example

[jerry]$ echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NF > 2'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

One Two Three
One Two Three Four

एन.आर.

यह वर्तमान रिकॉर्ड की संख्या का प्रतिनिधित्व करता है। उदाहरण के लिए, निम्न उदाहरण रिकॉर्ड को प्रिंट करता है यदि वर्तमान रिकॉर्ड संख्या तीन से कम है।

Example

[jerry]$ echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NR < 3'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

One Two
One Two Three

एफ एन आर

यह एनआर के समान है, लेकिन वर्तमान फ़ाइल के सापेक्ष है। यह उपयोगी है जब AWK कई फ़ाइलों पर काम कर रहा है। नई फ़ाइल के साथ FNR रीसेट का मान।

OFMT

यह आउटपुट स्वरूप संख्या का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मान है %.6g

Example

[jerry]$ awk 'BEGIN {print "OFMT = " OFMT}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

OFMT = %.6g

ओएफएस

यह आउटपुट फ़ील्ड विभाजक का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मान अंतरिक्ष है।

Example

[jerry]$ awk 'BEGIN {print "OFS = " OFS}' | cat -vte

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

OFS =  $

ओआरएस

यह आउटपुट रिकॉर्ड विभाजक का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मान न्यूलाइन है।

Example

[jerry]$ awk 'BEGIN {print "ORS = " ORS}' | cat -vte

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

Output

ORS = $
$

RLENGTH

यह द्वारा मिलान स्ट्रिंग की लंबाई का प्रतिनिधित्व करता है matchसमारोह। AWK का मिलान फ़ंक्शन इनपुट-स्ट्रिंग में दिए गए स्ट्रिंग की खोज करता है।

Example

[jerry]$ awk 'BEGIN { if (match("One Two Three", "re")) { print RLENGTH } }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

2

रुपये

यह (इनपुट) रिकॉर्ड विभाजक का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मान न्यूलाइन है।

Example

[jerry]$ awk 'BEGIN {print "RS = " RS}' | cat -vte

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

RS = $
$

RSTART

यह द्वारा मिलान स्ट्रिंग में पहली स्थिति का प्रतिनिधित्व करता है match समारोह।

Example

[jerry]$ awk 'BEGIN { if (match("One Two Three", "Thre")) { print RSTART } }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

9

SUBSEP

यह सरणी सदस्यता के लिए विभाजक चरित्र का प्रतिनिधित्व करता है और इसका डिफ़ॉल्ट मूल्य है \034

Example

[jerry]$ awk 'BEGIN { print "SUBSEP = " SUBSEP }' | cat -vte

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

SUBSEP = ^\$

$ 0

यह संपूर्ण इनपुट रिकॉर्ड का प्रतिनिधित्व करता है।

Example

[jerry]$ awk '{print $0}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

1) Amit     Physics   80
2) Rahul    Maths     90
3) Shyam    Biology   87
4) Kedar    English   85
5) Hari     History   89

$ n

यह वर्तमान रिकॉर्ड में n वें फ़ील्ड का प्रतिनिधित्व करता है जहाँ फ़ील्ड FS द्वारा अलग किए जाते हैं।

Example

[jerry]$ awk '{print $3 "\t" $4}' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Physics   80
Maths     90
Biology   87
English   85
History   89

GNU AWK विशिष्ट चर

GNU AWK विशिष्ट चर निम्नानुसार हैं -

ARGIND

यह संसाधित की जा रही वर्तमान फ़ाइल के ARGV में सूचकांक का प्रतिनिधित्व करता है।

Example

[jerry]$ awk '{ 
   print "ARGIND   = ", ARGIND; print "Filename = ", ARGV[ARGIND] 
}' junk1 junk2 junk3

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

ARGIND   =  1
Filename =  junk1
ARGIND   =  2
Filename =  junk2
ARGIND   =  3
Filename =  junk3

BINMODE

इसका उपयोग नॉन-पॉसिक्स सिस्टम पर सभी फ़ाइल I / O के लिए बाइनरी मोड को निर्दिष्ट करने के लिए किया जाता है। 1, 2, या 3 के संख्यात्मक मान निर्दिष्ट करते हैं कि इनपुट फाइलें, आउटपुट फाइलें या सभी फाइलें क्रमशः बाइनरी I / O का उपयोग करें। स्ट्रिंग मूल्यों कीr या wनिर्दिष्ट करें कि क्रमशः इनपुट फ़ाइल या आउटपुट फाइलें, बाइनरी I / O का उपयोग करना चाहिए। स्ट्रिंग मूल्यों कीrw या wr निर्दिष्ट करें कि सभी फ़ाइलों को बाइनरी I / O का उपयोग करना चाहिए।

errno

जब कोई पुनर्निर्देशन विफल हो जाता है, तो स्ट्रिंग एक त्रुटि को इंगित करता है getline या अगर close कॉल विफल।

Example

[jerry]$ awk 'BEGIN { ret = getline < "junk.txt"; if (ret == -1) print "Error:", ERRNO }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Error: No such file or directory

FIELDWIDTHS

फ़ील्ड चौड़ाई चर की एक अलग सूची अलग सेट की जाती है, GAWK क्षेत्र विभाजक के रूप में FS चर के मूल्य का उपयोग करने के बजाय, निश्चित चौड़ाई के क्षेत्रों में इनपुट को पार्स करता है।

मामले की अनदेखी करें

जब यह चर सेट किया जाता है, तो GAWK केस-असंवेदनशील हो जाता है। निम्न उदाहरण यह प्रदर्शित करता है -

Example

[jerry]$ awk 'BEGIN{IGNORECASE = 1} /amit/' marks.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

1) Amit  Physics   80

एक प्रकार का वृक्ष

यह के गतिशील नियंत्रण प्रदान करता है --lintGAWK कार्यक्रम से विकल्प। जब यह चर सेट किया जाता है, तो GAWK लिंट चेतावनी देता है। जब स्ट्रिंग मान घातक दिया जाता है, लिंट चेतावनी घातक त्रुटियां बन जाती हैं, बिल्कुल उसी तरह--lint=fatal

Example

[jerry]$ awk 'BEGIN {LINT = 1; a}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

awk: cmd. line:1: warning: reference to uninitialized variable `a'
awk: cmd. line:1: warning: statement has no effect

PROCINFO

यह एक साहचर्य सरणी है जिसमें प्रक्रिया के बारे में जानकारी होती है, जैसे कि वास्तविक और प्रभावी यूआईडी नंबर, प्रक्रिया आईडी नंबर, और इसी तरह।

Example

[jerry]$ awk 'BEGIN { print PROCINFO["pid"] }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

4316

TEXTDOMAIN

यह AWK प्रोग्राम के टेक्स्ट डोमेन का प्रतिनिधित्व करता है। इसका उपयोग प्रोग्राम के स्ट्रिंग्स के लिए स्थानीयकृत अनुवादों को खोजने के लिए किया जाता है।

Example

[jerry]$ awk 'BEGIN { print TEXTDOMAIN }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

messages

उपरोक्त आउटपुट अंग्रेजी पाठ को दर्शाता है en_IN स्थान

अन्य प्रोग्रामिंग भाषाओं की तरह, AWK भी ऑपरेटरों का एक बड़ा सेट प्रदान करता है। यह अध्याय उपयुक्त उदाहरणों के साथ AWK ऑपरेटरों को समझाता है।

क्र.सं. ऑपरेटर और विवरण
1 अंकगणितीय आपरेटर

AWK निम्नलिखित अंकगणित ऑपरेटरों का समर्थन करता है।

2 वेतन वृद्धि और कमी ऑपरेटर

AWK निम्नलिखित वेतन वृद्धि और वेतन वृद्धि ऑपरेटरों का समर्थन करता है।

3 असाइनमेंट ऑपरेटर्स

AWK निम्नलिखित असाइनमेंट ऑपरेटरों का समर्थन करता है।

4 संबंधपरक संकारक

AWK निम्नलिखित संबंध ऑपरेटरों का समर्थन करता है।

5 लॉजिकल ऑपरेटर्स

AWK निम्नलिखित तार्किक ऑपरेटरों का समर्थन करता है।

6 टर्नरी ऑपरेटर

हम टर्नरी ऑपरेटर का उपयोग करके आसानी से एक शर्त अभिव्यक्ति को लागू कर सकते हैं।

7 यूनरी ऑपरेटर्स

AWK निम्नलिखित यूनिरी ऑपरेटरों का समर्थन करता है।

8 घातांक संचालक

घातीय संचालकों के दो प्रारूप हैं।

9 स्ट्रिंग कॉनटेनटेशन ऑपरेटर

अंतरिक्ष एक स्ट्रिंग संघनन ऑपरेटर है जो दो तारों का विलय करता है।

10 एरियर सदस्यता संचालक

यह द्वारा प्रतिनिधित्व किया है in। यह एरे तत्वों को एक्सेस करते समय उपयोग किया जाता है।

1 1 नियमित अभिव्यक्ति संचालक

यह उदाहरण नियमित अभिव्यक्ति ऑपरेटरों के दो रूपों की व्याख्या करता है।

AWK नियमित अभिव्यक्ति को संभालने में बहुत शक्तिशाली और कुशल है। सरल नियमित अभिव्यक्तियों के साथ कई जटिल कार्यों को हल किया जा सकता है। कोई भी कमांड-लाइन विशेषज्ञ नियमित अभिव्यक्ति की शक्ति जानता है।

इस अध्याय में उपयुक्त उदाहरणों के साथ मानक नियमित अभिव्यक्ति शामिल हैं।

दूरसंचार विभाग

यह रेखा चरित्र के अंत को छोड़कर किसी भी एक वर्ण से मेल खाता है। उदाहरण के लिए, निम्न उदाहरण मेल खाता हैfin, fun, fan आदि।

उदाहरण

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

उत्पादन

fun
fin
fan

लाइन की शुरुआत

यह लाइन की शुरुआत से मेल खाता है। उदाहरण के लिए, निम्न उदाहरण पैटर्न के साथ शुरू होने वाली सभी लाइनों को प्रिंट करता हैThe

उदाहरण

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

There
Their

पंक्ति का अंत

यह लाइन के अंत से मेल खाता है। उदाहरण के लिए, निम्न उदाहरण पत्र के साथ समाप्त होने वाली रेखाओं को प्रिंट करता हैn

उदाहरण

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

उत्पादन

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

fun
fin
fan

मैच चरित्र सेट

इसका उपयोग कई पात्रों में से केवल एक से मेल खाने के लिए किया जाता है। उदाहरण के लिए, निम्न उदाहरण पैटर्न से मेल खाता हैCall तथा Tall लेकिन नहीं Ball

उदाहरण

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

उत्पादन

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Call
Tall

अनन्य सेट

विशेष सेट में, कैरेट वर्ग कोष्ठक में वर्णों के सेट को नकारता है। उदाहरण के लिए, निम्न उदाहरण केवल प्रिंट करता हैBall

उदाहरण

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Ball

परिवर्तन

एक ऊर्ध्वाधर पट्टी नियमित रूप से अभिव्यक्ति को मौखिक रूप से करने की अनुमति देती है। उदाहरण के लिए, निम्न उदाहरण प्रिंट करता हैBall तथा Call

उदाहरण

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Call
Ball

शून्य या एक घटना

यह पूर्ववर्ती चरित्र के शून्य या एक घटना से मेल खाता है। उदाहरण के लिए, निम्न उदाहरण मेल खाता हैColour साथ ही साथ Color। हमने बनाया हेu का उपयोग करके एक वैकल्पिक चरित्र के रूप में ?

उदाहरण

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Colour
Color

शून्य या अधिक घटना

यह पूर्ववर्ती चरित्र के शून्य या अधिक घटनाओं से मेल खाता है। उदाहरण के लिए, निम्न उदाहरण मेल खाता हैca, cat, catt, और इसी तरह।

उदाहरण

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

ca
cat
catt

एक या अधिक घटना

यह पूर्ववर्ती चरित्र की एक या अधिक घटना से मेल खाता है। उदाहरण के नीचे उदाहरण के लिए एक या अधिक घटनाओं से मेल खाता है2

उदाहरण

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

उत्पादन

22
123
234
222

समूहन

Parentheses ()समूह और चरित्र के लिए उपयोग किया जाता है | विकल्प के लिए प्रयोग किया जाता है। उदाहरण के लिए, निम्न नियमित अभिव्यक्ति या तो रेखाओं से मेल खाती हैApple Juice or Apple Cake

उदाहरण

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Apple Juice
Apple Cake

एडब्ल्यूके में साहचर्य सरणियां हैं और इसके बारे में सबसे अच्छी बात यह है कि - अनुक्रमित को संख्या का निरंतर सेट होने की आवश्यकता नहीं है; आप या तो स्ट्रिंग या संख्या का उपयोग एक सरणी सूचकांक के रूप में कर सकते हैं। इसके अलावा, अग्रिम में किसी सरणी के आकार को घोषित करने की कोई आवश्यकता नहीं है - रनटाइम में सरणियों का विस्तार / सिकुड़ सकता है।

इसका सिंटैक्स इस प्रकार है -

वाक्य - विन्यास

array_name[index] = value

कहाँ पे array_name सरणी का नाम है, index सरणी सूचकांक है, और value सरणी के तत्व को निर्दिष्ट करने वाला कोई भी मान है।

ऐरे बनाना

सरणी पर अधिक जानकारी प्राप्त करने के लिए, आइए हम एक सरणी के तत्वों को बनाएं और एक्सेस करें।

उदाहरण

[jerry]$ awk 'BEGIN {
   fruits["mango"] = "yellow";
   fruits["orange"] = "orange"
   print fruits["orange"] "\n" fruits["mango"]
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

orange
yellow

उपरोक्त उदाहरण में, हम सरणी को इस रूप में घोषित करते हैं fruitsजिसका सूचकांक फल का नाम और मूल्य फल का रंग है। सरणी तत्वों तक पहुंचने के लिए, हम उपयोग करते हैंarray_name[index] प्रारूप।

ऐरे तत्वों को हटाना

सम्मिलन के लिए, हमने असाइनमेंट ऑपरेटर का उपयोग किया। इसी तरह, हम उपयोग कर सकते हैंdeleteसरणी से एक तत्व को निकालने के लिए बयान। डिलीट स्टेटमेंट का सिंटैक्स इस प्रकार है -

वाक्य - विन्यास

delete array_name[index]

निम्न उदाहरण तत्व को हटा देता है orange। इसलिए कमांड कोई आउटपुट नहीं दिखाता है।

उदाहरण

[jerry]$ awk 'BEGIN {
   fruits["mango"] = "yellow";
   fruits["orange"] = "orange";
   delete fruits["orange"];
   print fruits["orange"]
}'

बहु-आयामी सरणियाँ

AWK केवल एक आयामी सरणियों का समर्थन करता है। लेकिन आप आसानी से वन-आयामी सरणी का उपयोग करके एक बहुआयामी सरणी का अनुकरण कर सकते हैं।

उदाहरण के लिए, नीचे दिया गया 3x3 द्वि-आयामी सरणी है -

100   200   300
400   500   600
700   800   900

उपर्युक्त उदाहरण में, सरणी [0] [0] स्टोर 100, सरणी [0] [1] स्टोर 200, और इसी तरह। सरणी स्थान पर 100 स्टोर करने के लिए [0] [0], हम निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं -

वाक्य - विन्यास

array["0,0"] = 100

हालांकि हमने दिया 0,0सूचकांक के रूप में, ये दो सूचकांक नहीं हैं। वास्तव में, यह स्ट्रिंग के साथ सिर्फ एक सूचकांक है0,0

निम्न उदाहरण एक 2-D सरणी का अनुकरण करता है -

उदाहरण

[jerry]$ awk 'BEGIN {
   array["0,0"] = 100;
   array["0,1"] = 200;
   array["0,2"] = 300;
   array["1,0"] = 400;
   array["1,1"] = 500;
   array["1,2"] = 600;

   # print array elements
   print "array[0,0] = " array["0,0"];
   print "array[0,1] = " array["0,1"];
   print "array[0,2] = " array["0,2"];
   print "array[1,0] = " array["1,0"];
   print "array[1,1] = " array["1,1"];
   print "array[1,2] = " array["1,2"];
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600

आप किसी सरणी पर कई प्रकार के ऑपरेशन भी कर सकते हैं जैसे कि इसके तत्वों / अनुक्रमितों को छांटना। उस उद्देश्य के लिए, आप उपयोग कर सकते हैंassort तथा asorti कार्यों

अन्य प्रोग्रामिंग भाषाओं की तरह, AWK एक कार्यक्रम के प्रवाह को नियंत्रित करने के लिए सशर्त वक्तव्य प्रदान करता है। यह अध्याय उपयुक्त उदाहरणों के साथ AWK के नियंत्रण कथनों की व्याख्या करता है।

अगर बयान

यह बस हालत का परीक्षण करता है और स्थिति के आधार पर कुछ क्रियाएं करता है। नीचे दिए गए का सिंटैक्स हैif कथन -

वाक्य - विन्यास

if (condition)
   action

हम कई क्रियाओं को करने के लिए नीचे दिए गए घुंघराले ब्रेसिज़ की एक जोड़ी का भी उपयोग कर सकते हैं -

वाक्य - विन्यास

if (condition) {
   action-1
   action-1
   .
   .
   action-n
}

उदाहरण के लिए, निम्न उदाहरण यह जांचता है कि कोई संख्या सम है या नहीं -

उदाहरण

[jerry]$ awk 'BEGIN {num = 10; if (num % 2 == 0) printf "%d is even number.\n", num }'

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

उत्पादन

10 is even number.

यदि एल्स स्टेटमेंट

में if-else सिंटैक्स, हम क्रियाओं की एक सूची प्रदान कर सकते हैं जब एक स्थिति झूठी हो जाती है।

का वाक्य विन्यास if-else कथन इस प्रकार है -

वाक्य - विन्यास

if (condition)
   action-1
else
   action-2

उपरोक्त सिंटैक्स में, क्रिया -1 तब की जाती है जब स्थिति सही का मूल्यांकन करती है और जब स्थिति झूठी का मूल्यांकन करती है तो कार्रवाई -2 का प्रदर्शन किया जाता है। उदाहरण के लिए, निम्न उदाहरण यह जांचता है कि कोई संख्या सम है या नहीं -

उदाहरण

[jerry]$ awk 'BEGIN {
   num = 11; if (num % 2 == 0) printf "%d is even number.\n", num; 
      else printf "%d is odd number.\n", num 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

11 is odd number.

अगर-एल्स-इफ लैडर

हम आसानी से एक बना सकते हैं if-else-if कई का उपयोग करके सीढ़ी if-elseबयान। निम्न उदाहरण यह प्रदर्शित करता है -

उदाहरण

[jerry]$ awk 'BEGIN {
   a = 30;
   
   if (a==10)
   print "a = 10";
   else if (a == 20)
   print "a = 20";
   else if (a == 30)
   print "a = 30";
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

a = 30

यह अध्याय उपयुक्त उदाहरण के साथ AWK के छोरों की व्याख्या करता है। लूप्स का उपयोग बार-बार क्रियाओं के एक सेट को निष्पादित करने के लिए किया जाता है। लूप निष्पादन तब तक जारी रहता है जब तक लूप की स्थिति सही नहीं होती।

पाश के लिए

का वाक्य विन्यास for पाश है -

वाक्य - विन्यास

for (initialization; condition; increment/decrement)
   action

शुरू में, forस्टेटमेंट इनिशियलाइज़ेशन एक्शन करता है, फिर यह कंडीशन को चेक करता है। यदि स्थिति सही है, तो यह क्रियाओं को निष्पादित करता है, इसके बाद यह वृद्धि या क्षरण ऑपरेशन करता है। लूप निष्पादन तब तक जारी रहता है जब तक कि स्थिति सही न हो। उदाहरण के लिए, निम्नलिखित उदाहरण 1 से 5 प्रिंट करता हैfor पाश -

उदाहरण

[jerry]$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

1
2
3
4
5

घुमाव के दौरान

whileलूप क्रिया को तब तक क्रियान्वित करता रहता है जब तक कि कोई विशेष तार्किक स्थिति सत्य का मूल्यांकन नहीं करती है। यहाँ वाक्य रचना हैwhile पाश -

वाक्य - विन्यास

while (condition)
   action

AWK पहले स्थिति की जांच करता है; यदि शर्त सही है, तो यह कार्रवाई को अंजाम देता है। यह प्रक्रिया तब तक दोहराती है जब तक लूप स्थिति सही का मूल्यांकन नहीं करती है। उदाहरण के लिए, निम्नलिखित उदाहरण 1 से 5 प्रिंट करता हैwhile पाश -

उदाहरण

[jerry]$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

1
2
3
4
5

दोहा-जबकि लूप

do-whileलूप, लूप के समान है, सिवाय इसके कि लूप के अंत में परीक्षण की स्थिति का मूल्यांकन किया जाता है। यहाँ वाक्य रचना हैdo-whileपाश -

वाक्य - विन्यास

do
   action
while (condition)

में do-whileलूप, एक्शन स्टेटमेंट कम से कम एक बार तब भी निष्पादित हो जाता है जब स्थिति स्टेटमेंट गलत का मूल्यांकन करता है। उदाहरण के लिए, निम्न उदाहरण 1 से 5 नंबर का उपयोग करके प्रिंट करता हैdo-while पाश -

उदाहरण

[jerry]$ awk 'BEGIN {i = 1; do { print i; ++i } while (i < 6) }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

1
2
3
4
5

ब्रेक स्टेटमेंट

जैसा कि इसके नाम से पता चलता है, इसका उपयोग लूप निष्पादन को समाप्त करने के लिए किया जाता है। यहां एक उदाहरण है जो 50 से अधिक होने पर लूप को समाप्त करता है।

उदाहरण

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) { 
      sum += i; if (sum > 50) break; else print "Sum =", sum 
   } 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

जारी बयान

continueकथन का उपयोग लूप के अंदर किया जाता है ताकि लूप के अगले पुनरावृत्ति को छोड़ सकें। यह उपयोगी है जब आप लूप के अंदर कुछ डेटा के प्रसंस्करण को छोड़ना चाहते हैं। उदाहरण के लिए, निम्न उदाहरण का उपयोग करता हैcontinue 1 से 20 के बीच सम संख्याओं को प्रिंट करने का विवरण।

उदाहरण

[jerry]$ awk 'BEGIN {
   for (i = 1; i <= 20; ++i) {
      if (i % 2 == 0) print i ; else continue
   } 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

2
4
6
8
10
12
14
16
18
20

एग्जिट स्टेटमेंट

इसका उपयोग स्क्रिप्ट के निष्पादन को रोकने के लिए किया जाता है। यह पूर्णांक को एक तर्क के रूप में स्वीकार करता है जो AWK प्रक्रिया के लिए निकास स्थिति कोड है। यदि कोई तर्क नहीं दिया गया है,exitरिटर्न स्टेटस जीरो। यहां एक उदाहरण है जो निष्पादन को रोक देता है जब योग 50 से अधिक हो जाता है।

उदाहरण

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) {
      sum += i; if (sum > 50) exit(10); else print "Sum =", sum 
   } 
}'

उत्पादन

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

आइए हम स्क्रिप्ट की वापसी स्थिति की जांच करें।

उदाहरण

[jerry]$ echo $?

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

10

एडब्ल्यूके में कई कार्य हैं जो हमेशा प्रोग्रामर के लिए उपलब्ध हैं। इस अध्याय में उपयुक्त उदाहरणों के साथ अंकगणित, स्ट्रिंग, समय, बिट हेरफेर और अन्य विविध कार्यों का वर्णन है।

क्र.सं. कार्यों और विवरण में निर्मित
1 अंकगणितीय कार्य

AWK में निम्नलिखित अंतर्निहित अंकगणितीय कार्य हैं।

2 स्ट्रिंग फ़ंक्शंस

AWK में निम्नलिखित अंतर्निहित स्ट्रिंग फ़ंक्शन हैं।

3 समय कार्य

AWK में निम्न अंतर्निहित समय कार्य हैं।

4 बिट मैनिपुलेशन फ़ंक्शंस

AWK में निम्न अंतर्निहित बिट हेरफेर फ़ंक्शन हैं।

5 विविध कार्य

AWK के निम्नलिखित विविध कार्य हैं।

कार्य एक कार्यक्रम के बुनियादी निर्माण खंड हैं। AWK हमें अपने स्वयं के कार्यों को परिभाषित करने की अनुमति देता है। एक बड़े कार्यक्रम को कार्यों में विभाजित किया जा सकता है और प्रत्येक फ़ंक्शन को स्वतंत्र रूप से लिखा / परीक्षण किया जा सकता है। यह कोड की पुन: प्रयोज्य प्रदान करता है।

नीचे दिया गया उपयोगकर्ता-परिभाषित फ़ंक्शन का सामान्य प्रारूप है -

वाक्य - विन्यास

function function_name(argument1, argument2, ...) { 
   function body
}

इस वाक्य रचना में, function_nameउपयोगकर्ता-परिभाषित फ़ंक्शन का नाम है। फ़ंक्शन का नाम एक अक्षर से शुरू होना चाहिए और बाकी अक्षर संख्याओं, वर्णमाला वर्णों या अंडरस्कोर के किसी भी संयोजन से हो सकते हैं। AWK के आरक्षित शब्दों को फ़ंक्शन नामों के रूप में उपयोग नहीं किया जा सकता है।

फ़ंक्शंस अल्पविराम द्वारा अलग किए गए कई तर्कों को स्वीकार कर सकते हैं। तर्क अनिवार्य नहीं हैं। आप किसी भी तर्क के बिना उपयोगकर्ता-परिभाषित फ़ंक्शन भी बना सकते हैं।

function body एक या अधिक AWK स्टेटमेंट्स होते हैं।

आइए हम दो फ़ंक्शन लिखते हैं जो न्यूनतम और अधिकतम संख्या की गणना करते हैं और इन फ़ंक्शन को किसी अन्य फ़ंक्शन से कॉल करते हैं mainfunctions.awk फ़ाइल शामिल है -

उदाहरण

# Returns minimum number
function find_min(num1, num2){
   if (num1 < num2)
   return num1
   return num2
}
# Returns maximum number
function find_max(num1, num2){
   if (num1 > num2)
   return num1
   return num2
}
# Main function
function main(num1, num2){
   # Find minimum number
   result = find_min(10, 20)
   print "Minimum =", result
  
   # Find maximum number
   result = find_max(10, 20)
   print "Maximum =", result
}
# Script execution starts here
BEGIN {
   main(10, 20)
}

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Minimum = 10
Maximum = 20

अब तक, हमने मानक आउटपुट स्ट्रीम पर डेटा प्रदर्शित किया। हम किसी फ़ाइल में डेटा को रीडायरेक्ट भी कर सकते हैं। के बाद एक पुनर्निर्देशन दिखाई देता हैprint या printfबयान। AWK में पुनर्निर्देशन को शेल कमांड में पुनर्निर्देशन की तरह लिखा जाता है, सिवाय इसके कि उन्हें AWK प्रोग्राम के अंदर लिखा जाता है। यह अध्याय उपयुक्त उदाहरणों के साथ पुनर्निर्देशन की व्याख्या करता है।

पुनर्निर्देशन संचालक

पुनर्निर्देशन ऑपरेटर का सिंटैक्स है -

वाक्य - विन्यास

print DATA > output-file

यह डेटा में लिखता है output-file। यदि आउटपुट-फ़ाइल मौजूद नहीं है, तो यह एक बनाता है। जब इस प्रकार के पुनर्निर्देशन का उपयोग किया जाता है, तो पहले आउटपुट को लिखे जाने से पहले आउटपुट-फ़ाइल मिटा दिया जाता है। एक ही आउटपुट-फ़ाइल के लिए बाद में लिखने के संचालन आउटपुट फ़ाइल को मिटा नहीं है, लेकिन यह करने के लिए संलग्न। उदाहरण के लिए, निम्नलिखित उदाहरण लिखते हैंHello, World !!! फ़ाइल के लिए।

आइए हम कुछ टेक्स्ट डेटा के साथ एक फ़ाइल बनाते हैं।

उदाहरण

[jerry]$ echo "Old data" > /tmp/message.txt [jerry]$ cat /tmp/message.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Old data

अब हमें AWK के पुनर्निर्देशन ऑपरेटर का उपयोग करके कुछ सामग्रियों को इसमें पुनः निर्देशित करें।

उदाहरण

[jerry]$ awk 'BEGIN { print "Hello, World !!!" > "/tmp/message.txt" }' [jerry]$ cat /tmp/message.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Hello, World !!!

परिचालक परिचालक

परिशिष्ट संचालक का वाक्य विन्यास इस प्रकार है -

वाक्य - विन्यास

print DATA >> output-file

यह डेटा को इसमें जोड़ता है output-file। यदि आउटपुट-फ़ाइल मौजूद नहीं है, तो यह एक बनाता है। जब इस प्रकार के पुनर्निर्देशन का उपयोग किया जाता है, तो फ़ाइल के अंत में नई सामग्री जोड़ दी जाती है। उदाहरण के लिए, निम्न उदाहरण जोड़ता हैHello, World !!! फ़ाइल के लिए।

आइए हम कुछ टेक्स्ट डेटा के साथ एक फ़ाइल बनाते हैं।

उदाहरण

[jerry]$ echo "Old data" > /tmp/message.txt [jerry]$ cat /tmp/message.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Old data

अब हमें AWK के परिशिष्ट ऑपरेटर का उपयोग करके कुछ सामग्री संलग्न करनी चाहिए।

उदाहरण

[jerry]$ awk 'BEGIN { print "Hello, World !!!" >> "/tmp/message.txt" }' [jerry]$ cat /tmp/message.txt

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

Old data
Hello, World !!!

पाइप

फ़ाइल का उपयोग करने के बजाय पाइप के माध्यम से दूसरे प्रोग्राम में आउटपुट भेजना संभव है। यह पुनर्निर्देशन कमांड करने के लिए एक पाइप खोलता है, और कमांड को निष्पादित करने के लिए इस पाइप के माध्यम से आइटम के मूल्यों को एक अन्य प्रक्रिया में लिखता है। पुनर्निर्देशन तर्क कमांड वास्तव में एक AWK अभिव्यक्ति है। यहाँ पाइप का वाक्य विन्यास है -

वाक्य - विन्यास

print items | command

हमें उपयोग करते हैं tr अपरकेस को अपरकेस में बदलने की कमांड।

उदाहरण

[jerry]$ awk 'BEGIN { print "hello, world !!!" | "tr [a-z] [A-Z]" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

HELLO, WORLD !!!

दो तरफ से संचार

AWK का उपयोग करके एक बाहरी प्रक्रिया से संवाद कर सकते हैं |&, जो दोतरफा संचार है। उदाहरण के लिए, निम्न उदाहरण का उपयोग करता हैtrअपरकेस को अपरकेस में बदलने की कमांड। हमारीcommand.awk फ़ाइल शामिल है -

उदाहरण

BEGIN {
   cmd = "tr [a-z] [A-Z]"
   print "hello, world !!!" |& cmd
   close(cmd, "to")
   
   cmd |& getline out
   print out;
   close(cmd);
}

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

उत्पादन

HELLO, WORLD !!!

क्या स्क्रिप्ट गूढ़ दिखती है? आइए हम इसे ध्वस्त करें।

  • पहला बयान, cmd = "tr [a-z] [A-Z]", वह कमांड है जिसके लिए हम AWK से दो तरफा संचार स्थापित करते हैं।

  • अगला कथन, यानी, प्रिंट कमांड इनपुट प्रदान करता है trआदेश। यहाँ&| दो-तरफ़ा संचार इंगित करता है।

  • तीसरा कथन, close(cmd, "to"), बंद हो जाता है to इसके निष्पादन की प्रतिस्पर्धा के बाद प्रक्रिया।

  • अगला बयान cmd |& getline out स्टोर करता है output गेटलाइन फ़ंक्शन की सहायता से बाहर चर में।

  • अगला प्रिंट स्टेटमेंट आउटपुट को प्रिंट करता है और अंत में close फ़ंक्शन कमांड को बंद करता है।

अब तक हमने AWK का उपयोग किया है print तथा printfमानक आउटपुट पर डेटा प्रदर्शित करने के लिए कार्य। लेकिन प्रिंटफ पहले की तुलना में कहीं अधिक शक्तिशाली है। यह फ़ंक्शन सी भाषा से उधार लिया गया है और स्वरूपित आउटपुट का उत्पादन करते समय बहुत सहायक है। नीचे प्रिंटफ स्टेटमेंट का सिंटैक्स है -

वाक्य - विन्यास

printf fmt, expr-list

उपरोक्त वाक्य रचना में fmt प्रारूप विनिर्देशों और स्थिरांक की एक स्ट्रिंग है। expr-list प्रारूप निर्दिष्टकर्ताओं के अनुरूप तर्कों की एक सूची है।

बच अनुक्रम

किसी भी स्ट्रिंग के समान, प्रारूप में एम्बेडेड एस्केप सीक्वेंस हो सकते हैं। नीचे चर्चा की गई AWK द्वारा समर्थित एस्केप सीक्वेंस हैं -

नई पंक्ति

निम्नलिखित उदाहरण प्रिंट करता है Hello तथा World न्यूलाइन वर्ण का उपयोग करके अलग लाइनों में -

Example

[jerry]$ awk 'BEGIN { printf "Hello\nWorld\n" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Hello
World

क्षैतिज टैब

निम्न उदाहरण विभिन्न फ़ील्ड प्रदर्शित करने के लिए क्षैतिज टैब का उपयोग करता है -

Example

[jerry]$ awk 'BEGIN { printf "Sr No\tName\tSub\tMarks\n" }'

उपरोक्त कोड निष्पादित करने पर, आपको निम्न परिणाम मिलते हैं -

Output

Sr No   Name    Sub Marks

लंबवत टैब

निम्न उदाहरण प्रत्येक दायर के बाद ऊर्ध्वाधर टैब का उपयोग करता है -

Example

[jerry]$ awk 'BEGIN { printf "Sr No\vName\vSub\vMarks\n" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Sr No
   Name
      Sub
         Marks

बैकस्पेस

निम्न उदाहरण पिछले एक को छोड़कर हर क्षेत्र के बाद एक बैकस्पेस प्रिंट करता है। यह पहले तीन क्षेत्रों से अंतिम संख्या मिटाता है। उदाहरण के लिए,Field 1 के रूप में प्रदर्शित किया जाता है Field, क्योंकि पिछले चरित्र को बैकस्पेस के साथ मिटा दिया गया है। हालाँकि, अंतिम क्षेत्रField 4 जैसा कि हमारे पास है, वैसा ही प्रदर्शित किया जाता है \b उपरांत Field 4

Example

[jerry]$ awk 'BEGIN { printf "Field 1\bField 2\bField 3\bField 4\n" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Field Field Field Field 4

कैरिज रिटर्न

निम्नलिखित उदाहरण में, हर क्षेत्र को मुद्रित करने के बाद, हम एक करते हैं Carriage Return और वर्तमान मुद्रित मूल्य के शीर्ष पर अगला मूल्य प्रिंट करें। इसका मतलब है, अंतिम आउटपुट में, आप केवल देख सकते हैंField 4, क्योंकि यह पिछले सभी क्षेत्रों के शीर्ष पर मुद्रित होने वाली आखिरी चीज थी।

Example

[jerry]$ awk 'BEGIN { printf "Field 1\rField 2\rField 3\rField 4\n" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Field 4

फ़ीड बनाएं

निम्न उदाहरण प्रत्येक फ़ील्ड को प्रिंट करने के बाद फ़ॉर्म फ़ीड का उपयोग करता है।

Example

[jerry]$ awk 'BEGIN { printf "Sr No\fName\fSub\fMarks\n" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Sr No
   Name
      Sub
         Marks

प्रारूप विनिर्देशक

सी-भाषा की तरह, AWK में भी प्रारूप विनिर्देशक हैं। Printf स्टेटमेंट का AWK संस्करण निम्नलिखित रूपांतरण विनिर्देशन प्रारूप स्वीकार करता है -

%सी

यह एकल चरित्र को प्रिंट करता है। अगर तर्क के लिए इस्तेमाल किया%cसंख्यात्मक है, यह एक चरित्र के रूप में माना जाता है और मुद्रित होता है। अन्यथा, तर्क को एक स्ट्रिंग माना जाता है, और उस स्ट्रिंग का एकमात्र पहला वर्ण मुद्रित होता है।

Example

[jerry]$ awk 'BEGIN { printf "ASCII value 65 = character %c\n", 65 }'

Output

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

ASCII value 65 = character A

% d और% i

यह केवल दशमलव संख्या के पूर्णांक भाग को प्रिंट करता है।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %d\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 80

% ई और% ई

यह फॉर्म के एक फ्लोटिंग पॉइंट नंबर को प्रिंट करता है [-] d.dddddde [+ -] dd।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %E\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 8.066000e+01

%E प्रारूप का उपयोग करता है E ई के बजाय।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %e\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 8.066000E+01

% च

यह फॉर्म का एक फ्लोटिंग पॉइंट नंबर प्रिंट करता है [-] ddd.dddddd।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %f\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 80.660000

% G और% G

% E या% f रूपांतरण का उपयोग करता है, जो भी छोटा है, गैर-महत्वपूर्ण शून्य से दबा हुआ है।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %g\n", 80.66 }'

Output

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Percentags = 80.66

%G प्रारूप का उपयोग करता है %E % ई के बजाय।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %G\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 80.66

% ओ

यह एक अहस्ताक्षरित अष्टक संख्या प्रिंट करता है।

Example

[jerry]$ awk 'BEGIN { printf "Octal representation of decimal number 10 = %o\n", 10}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Octal representation of decimal number 10 = 12

% u

यह एक अहस्ताक्षरित दशमलव संख्या प्रिंट करता है।

Example

[jerry]$ awk 'BEGIN { printf "Unsigned 10 = %u\n", 10 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Unsigned 10 = 10

% s

यह एक चरित्र स्ट्रिंग प्रिंट करता है।

Example

[jerry]$ awk 'BEGIN { printf "Name = %s\n", "Sherlock Holmes" }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Name = Sherlock Holmes

% x और% X

यह एक अहस्ताक्षरित हेक्साडेसिमल संख्या को प्रिंट करता है। %X प्रारूप लोअरकेस के बजाय अपरकेस अक्षरों का उपयोग करता है।

Example

[jerry]$ awk 'BEGIN { 
   printf "Hexadecimal representation of decimal number 15 = %x\n", 15
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Hexadecimal representation of decimal number 15 = f

अब% X का उपयोग करें और परिणाम देखें -

Example

[jerry]$ awk 'BEGIN { 
   printf "Hexadecimal representation of decimal number 15 = %X\n", 15
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Hexadecimal representation of decimal number 15 = F

%%

यह एकल प्रिंट करता है % चरित्र और कोई तर्क परिवर्तित नहीं होता है।

Example

[jerry]$ awk 'BEGIN { printf "Percentags = %d%%\n", 80.66 }'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Percentags = 80%

% के साथ वैकल्पिक पैरामीटर

साथ में % हम निम्नलिखित वैकल्पिक मापदंडों का उपयोग कर सकते हैं -

चौड़ाई

मैदान को गद्देदार किया जाता है width। डिफ़ॉल्ट रूप से, फ़ील्ड रिक्त स्थान के साथ गद्देदार होती है लेकिन जब 0 ध्वज का उपयोग किया जाता है, तो इसे शून्य से गद्देदार किया जाता है।

Example

[jerry]$ awk 'BEGIN { 
   num1 = 10; num2 = 20; printf "Num1 = %10d\nNum2 = %10d\n", num1, num2 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Num1 =         10
Num2 =         20

अग्रणी शून्य

एक अग्रणी शून्य एक ध्वज के रूप में कार्य करता है, जो इंगित करता है कि आउटपुट को रिक्त स्थान के बजाय ज़ीरो के साथ गद्देदार किया जाना चाहिए। कृपया ध्यान दें कि इस ध्वज का केवल तभी प्रभाव पड़ता है जब क्षेत्र मुद्रित होने वाले मूल्य से अधिक व्यापक हो। निम्न उदाहरण इस का वर्णन करता है -

Example

[jerry]$ awk 'BEGIN { 
   num1 = -10; num2 = 20; printf "Num1 = %05d\nNum2 = %05d\n", num1, num2 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Num1 = -0010
Num2 = 00020

वाम औचित्य

अभिव्यक्ति को उसके क्षेत्र के भीतर छोड़ दिया जाना चाहिए। जब इनपुट-स्ट्रिंग निर्दिष्ट वर्णों की संख्या से कम है, और आप इसे सही तरीके से छोड़ना चाहते हैं, अर्थात, दाईं ओर रिक्त स्थान जोड़कर,% के तुरंत बाद और संख्या से पहले एक ऋण चिह्न (-) का उपयोग करें।

निम्न उदाहरण में, AWK कमांड का आउटपुट END (LINE ($)) वर्ण का प्रदर्शन करने के लिए बिल्ली कमांड को दिया जाता है।

Example

[jerry]$ awk 'BEGIN { num = 10; printf "Num = %-5d\n", num }' | cat -vte

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Num = 10   $

उपसर्ग चिह्न

यह हमेशा एक संकेत के साथ संख्यात्मक मूल्यों को उपसर्ग करता है, भले ही मूल्य सकारात्मक हो।

Example

[jerry]$ awk 'BEGIN { 
   num1 = -10; num2 = 20; printf "Num1 = %+d\nNum2 = %+d\n", num1, num2 
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Num1 = -10
Num2 = +20

हैश

% O के लिए, यह एक अग्रणी शून्य की आपूर्ति करता है। % X और% X के लिए, यह क्रमशः 0x या 0X एक प्रमुख आपूर्ति करता है, यदि परिणाम गैर-शून्य है। % E,% E,% f और% F के लिए, परिणाम में हमेशा दशमलव बिंदु होता है। % G और% G के लिए, अनुगामी शून्य को परिणाम से नहीं हटाया जाता है। निम्न उदाहरण इस का वर्णन करता है -

Example

[jerry]$ awk 'BEGIN { 
   printf "Octal representation = %#o\nHexadecimal representaion = %#X\n", 10, 10
}'

इस कोड को निष्पादित करने पर, आपको निम्न परिणाम प्राप्त होंगे -

Output

Octal representation = 012
Hexadecimal representation = 0XA