एडब्ल्यूके: Difference between revisions

From Vigyanwiki
mNo edit summary
No edit summary
 
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
यह लेख प्रोग्रामिंग भाषा के बारे में है। अन्य उपयोगों के लिए, AWK (बहुविकल्पी) देखें ।
यह लेख प्रोग्रामिंग भाषा के बारे में है। अन्य उपयोगों के लिए,एडब्ल्यूके (बहुविकल्पी) देखें ।


एडब्ल्यूके (''awk'')<ref name=awkLC.DR/>एक [[डोमेन-विशिष्ट भाषा]] है जिसे पाठ प्रसंस्करण के लिए डिज़ाइन किया गया है और आमतौर पर डेटा निष्कर्षण और लेखन उपकरण के रूप में उपयोग किया जाता है। [[sed]] और [[grep]] की तरह,यह एक [[फिल्टर (सॉफ्टवेयर)]] है,<ref name=awkLC.DR>{{cite magazine |magazine=Digital Review |date=May 2, 1988 |page=91 |author=James W. Livingston |title=ग्रेट ऑक प्रोग्राम नो बर्डब्रेन है}}</ref> और अधिकांश [[यूनिक्स जैसा ऑपरेटिंग सिस्टम|यूनिक्स जैसे प्रचालन तंत्र]] की एक मानक विशेषता है।
एडब्ल्यूके (''awk'')<ref name=awkLC.DR/>एक [[डोमेन-विशिष्ट भाषा]] है जिसे पाठ प्रसंस्करण के लिए रचित किया गया है और सामान्यतः जानकारी निष्कर्षण और लेखन उपकरण के रूप में उपयोग किया जाता है। सेड और ग्रेप की तरह,यह एक [[फिल्टर (सॉफ्टवेयर)]] है,<ref name=awkLC.DR>{{cite magazine |magazine=Digital Review |date=May 2, 1988 |page=91 |author=James W. Livingston |title=ग्रेट ऑक प्रोग्राम नो बर्डब्रेन है}}</ref> और अधिकांश [[यूनिक्स जैसा ऑपरेटिंग सिस्टम|यूनिक्स जैसे प्रचालन तंत्र]] की एक मानक विशेषता है।
{| class="wikitable"
 
|+एडब्ल्यूके
एडब्ल्यूके भाषा एक जानकारी संचालन पटकथा(स्क्रिप्टिंग) भाषा है जिसमें पाठ्य जानकारी की पैटर्न के विपरीत की जाने वाली क्रियाओं का एक समूह होता है जिसमें विषय वस्तु निकालने या बदलने के उद्देश्य से या तो सीधे फाइलों पर कार्य करता है या एक [[पाइपलाइन (यूनिक्स)|पाइपलाइन]] के हिस्से के रूप में उपयोग किया जाता है- जैसे स्वरूपित विवरण तैयार करना। ये भाषा बड़े पैमाने पर स्ट्रिंग डेटा टाइप,सहयोगी सरणी,और [[नियमित अभिव्यक्ति]]यों का उपयोग करती है। जबकि एडब्ल्यूके का एक सीमित प्रयोजन कार्यक्षेत्र [[डोमेन (सॉफ्टवेयर इंजीनियरिंग)|(सॉफ्टवेयर इंजीनियरिंग)]] है और इसे विशेष रूप से [[एक-लाइनर कार्यक्रम|एक-पंक्तिय कार्यक्रमो]] का समर्थन करने के लिए रचित किया गया था,भाषा [[ट्यूरिंग-पूर्ण]] है,और यहां तक ​​कि एडब्ल्यूके के प्रारंभिक बेल लैब्स उपयोगकर्ता अक्सर अच्छी तरह से संरचित बड़े एडब्ल्यूके प्रोग्राम लिखते थे।<ref>{{cite web
| colspan="2" |
|-
!आदर्श
|स्क्रिप्टिंग , प्रक्रियात्मक , डेटा-संचालित
|-
!द्वारा डिज़ाइन किया गया
|अल्फ्रेड अहो , पीटर वेनबर्गर , और ब्रायन कर्निघन
|-
!पहली प्रस्तुति
|1977 ; 45 साल पहले
|-
| colspan="2" |
|-
!स्थिर निस्तार
|IEEE Std 1003.1-2008 (POSIX) / 1985
|-
!टाइपिंग अनुशासन
|कोई भी नहीं; तार, पूर्णांक और फ़्लोटिंग-पॉइंट नंबरों को संभाल सकता है; नियमित अभिव्यक्ति
|-
!ओएस
|क्रॉस-प्लेटफॉर्म
|-
! colspan="2" |प्रमुख कार्यान्वयन
|-
| colspan="2" |awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (संकलक), Awka (संकलक)
|-
! colspan="2" |बोलियों
|-
| colspan="2" |''पुराना awk'' oawk 1977, ''new awk'' nawk 1985, ''GNU awk'' gawk
|-
! colspan="2" |से प्रभावित
|-
| colspan="2" |सी , सेड , स्नोबोल
|-
! colspan="2" |प्रभावित
|-
| colspan="2" |टीसीएल , एएमपीएल , पर्ल , कोर्न शेल ( ''ksh93'' , ''dtksh'' , ''tksh'' ), लुआ
|}
AWK भाषा एक डेटा संचालन पटकथा(स्क्रिप्टिंग) भाषा है जिसमें पाठ्य डेटा की श्रृंखलाओं के विपरीत की जाने वाली क्रियाओं का एक समूह होता है जिसमें टेक्स्ट निकालने या बदलने के उद्देश्य से या तो सीधे फाइलों पर कार्य करता है या एक [[पाइपलाइन (यूनिक्स)|पाइपलाइन]] के हिस्से के रूप में उपयोग किया जाता है- जैसे स्वरूपित रिपोर्ट तैयार करना। ये भाषा बड़े पैमाने पर [[स्ट्रिंग (कंप्यूटर विज्ञान)|श्रृंखलाओं]] [[डेटा प्रकार]],सहयोगी सरणी,और [[नियमित अभिव्यक्ति]]यों का उपयोग करती है। जबकि AWK का एक सीमित प्रयोजन कार्यक्षेत्र [[डोमेन (सॉफ्टवेयर इंजीनियरिंग)|(सॉफ्टवेयर इंजीनियरिंग)]] है और इसे विशेष रूप से [[एक-लाइनर कार्यक्रम|एक-पंक्तिय कार्यक्रमो]] का समर्थन करने के लिए डिज़ाइन किया गया था, भाषा [[ट्यूरिंग-पूर्ण]] है, और यहां तक ​​कि एडब्ल्यूके के प्रारंभिक बेल लैब्स उपयोगकर्ता अक्सर अच्छी तरह से संरचित बड़े एडब्ल्यूके प्रोग्राम लिखते थे।<ref>{{cite web
| url        = http://www.faqs.org/docs/artu/ch08s02.html#awk
| url        = http://www.faqs.org/docs/artu/ch08s02.html#awk
| title      = Applying Minilanguages
| title      = Applying Minilanguages
Line 56: Line 17:
}}</ref>
}}</ref>


एडब्ल्यूके को 1970 के दशक में [[बेल लैब्स]] में बनाया गया था,<ref>{{cite techreport |url=https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.1299 |title=Awk - एक पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज (दूसरा संस्करण)|last1=Aho |first1=Alfred V. |author-link1=Alfred Aho |last2=Kernighan |first2=Brian W. |author-link2=Brian Kernighan |last3=Weinberger |first3=Peter J. |author-link3=Peter J. Weinberger |date=September 1, 1978 |publisher=Bell Telephone Laboratories, Inc. |series=Unix Seventh Edition Manual, Volume 2 |access-date=February 1, 2020}}</ref> और इसका नाम इसके लेखकों के उपनामों से लिया गया है: [[मैं अल्फ्रेड हूं]], पीटर जे वेनबर्गर और [[ब्रायन कर्निघन]]। परिवर्णी शब्द का उच्चारण पक्षी [[के अतिरिक्त|औक (auk)]] के नाम के समान ही किया जाता है, जो [[AWK प्रोग्रामिंग लैंग्वेज|एडब्ल्यूके]] प्रोग्रामिंग भाषा के कवर पर है।<ref name="AWK1" /> जब सभी छोटे अक्षरों में लिखा जाता है, जैसे <code>awk</code>,यह बेल लैब्स प्रोग्राम के [[यूनिक्स]] या परियोजना 9 को संदर्भित करता है जो AWK प्रोग्रामिंग भाषा में लिखी गई पटकथा को चलाता है।
एडब्ल्यूके को 1970 के दशक में [[बेल लैब्स]] में बनाया गया था,<ref>{{cite techreport |url=https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.1299 |title=Awk - एक पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज (दूसरा संस्करण)|last1=Aho |first1=Alfred V. |author-link1=Alfred Aho |last2=Kernighan |first2=Brian W. |author-link2=Brian Kernighan |last3=Weinberger |first3=Peter J. |author-link3=Peter J. Weinberger |date=September 1, 1978 |publisher=Bell Telephone Laboratories, Inc. |series=Unix Seventh Edition Manual, Volume 2 |access-date=February 1, 2020}}</ref> और इसका नाम इसके लेखकों के उपनामों से लिया गया है: [[मैं अल्फ्रेड हूं]], पीटर जे वेनबर्गर और [[ब्रायन कर्निघन]]। परिवर्णी शब्द का उच्चारण पक्षी [[के अतिरिक्त|औक (auk)]] के नाम के समान ही किया जाता है, जो [[AWK प्रोग्रामिंग लैंग्वेज|एडब्ल्यूके]] प्रोग्रामिंग भाषा के कवर पर है।<ref name="AWK1" /> जब सभी छोटे अक्षरों में लिखा जाता है,जैसे <code>awk</code>,यह बेल लैब्स प्रोग्राम के [[यूनिक्स]] या परियोजना 9 को संदर्भित करता है जो एडब्ल्यूके प्रोग्रामिंग भाषा में लिखी गई पटकथा को चलाता है।


== इतिहास ==
== इतिहास ==
एडब्ल्यूके को शुरू में 1977 में अल्फ्रेड अहो(A), पीटर जे. वेनबर्गर(W),और ब्रायन कर्निघन(K )द्वारा विकसित किया गया था। एडब्ल्यूके नाम इसके लेखकों के उपनाम पहले अक्षर से लिया गया है। कर्निघन के अनुसार,एडब्ल्यूके के लक्ष्यों में से एक ऐसा उपकरण होना था जो आसानी से संख्याओं और श्रृंखलाओं दोनों में कुशलता से काम कर सके। एडब्ल्यूके [[मार्क रोचकिंड]] की प्रोग्रामिंग भाषा से भी प्रेरित था जिसका उपयोग निविष्ट(इनपुट) डेटा में प्रतिरूप खोजने के लिए किया गया था,और इसे yacc का उपयोग करके लागू किया गया था।<ref>{{cite web|url=https://www.youtube.com/watch?v=vT_J6xc-Az0 | archive-url=https://ghostarchive.org/varchive/youtube/20211122/vT_J6xc-Az0| archive-date=2021-11-22 | url-status=live|title=UNIX विशेष: प्रोफेसर कर्निघन और ब्रिल्सफ़ोर्ड|work=Computerphile |date=September 30, 2015 }}{{cbignore}}</ref>
एडब्ल्यूके को प्रारम्भ में 1977 में अल्फ्रेड अहो(A),पीटर जे. वेनबर्गर(W),और ब्रायन कर्निघन(K)द्वारा विकसित किया गया था। एडब्ल्यूके नाम इसके लेखकों के उपनाम के पहले अक्षर से लिया गया है। कर्निघन के अनुसार,एडब्ल्यूके के लक्ष्यों में से एक ऐसा उपकरण होना था जो आसानी से संख्याओं और पैटर्न दोनों में कुशलता से काम कर सके। एडब्ल्यूके [[मार्क रोचकिंड]] की प्रोग्रामिंग भाषा से भी प्रेरित था जिसका उपयोग निविष्ट(इनपुट) जानकारी में प्रतिरूप खोजने के लिए किया गया था,और इसे yacc का उपयोग करके लागू किया गया था।<ref>{{cite web|url=https://www.youtube.com/watch?v=vT_J6xc-Az0 | archive-url=https://ghostarchive.org/varchive/youtube/20211122/vT_J6xc-Az0| archive-date=2021-11-22 | url-status=live|title=UNIX विशेष: प्रोफेसर कर्निघन और ब्रिल्सफ़ोर्ड|work=Computerphile |date=September 30, 2015 }}{{cbignore}}</ref>


[[संस्करण 7 यूनिक्स]] में प्रकट होने वाले शुरुआती उपकरणों में से एक के रूप में, एडब्ल्यूके ने [[बॉर्न शेल]] के अलावा एक यूनिक्स पाइपलाइन में गणितीय सुविधाएँ जोड़ीं, जो मानक यूनिक्स वातावरण में उपलब्ध एकमात्र पटकथा भाषा है। यह [[एकल यूनिक्स विशिष्टता]] की अनिवार्य उपयोगिताओं में से एक है,<ref>{{Cite web |url=http://www.unix.org/version3/apis/cu.html |title=एकल यूनिक्स विशिष्टता, संस्करण 3, यूटिलिटीज इंटरफेस टेबल|access-date=2005-12-18 |archive-url=https://web.archive.org/web/20180105030249/http://www.unix.org/version3/apis/cu.html |archive-date=2018-01-05 |url-status=dead }}</ref> और Linux मानक आधार विनिर्देश द्वारा आवश्यक है।<ref>{{cite techreport |url=https://refspecs.linuxfoundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic.html#COMMAND |title=लिनक्स मानक आधार कोर विशिष्टता 4.0|chapter=Chapter 15. Commands and Utilities |institution=Linux Foundation |date=2008 |access-date=2020-02-01 |archive-date=2019-10-16 |archive-url=https://web.archive.org/web/20191016015828/https://refspecs.linuxfoundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic.html#COMMAND |url-status=live }}</ref>एडब्ल्यूके को 1985-88 में महत्वपूर्ण रूप से संशोधित और विस्तारित किया गया था, जिसके परिणामस्वरूप 1988 में जारी पॉल रूबिन [[जे फेनलसन]] और [[रिचर्ड स्टालमैन]] द्वारा लिखित Gawk(GNU पैकेज) कार्यान्वयन हुआ।<ref name="robbins" />जीएनयू एडब्ल्यूके सबसे व्यापक रूप से तैनात संस्करण हो सकता है<ref>{{cite book|last1=Dougherty|first1=Dale|last2=Robbins|first2=Arnold|title=मास्टर और ओक|date=1997|publisher=O'Reilly|location=Sebastopol, CA|isbn=1-565-92225-5|page=221|edition=2nd}}</ref> क्योंकि यह जीएनयू-आधारित Linux पैकेज में शामिल है। 1994 से केवल [[अर्नोल्ड रॉबिंस]] ने जीएनयू एडब्ल्यूके को बनाए रखा गया है।<ref name="robbins">{{cite web |url=http://www.skeeve.com/gnu-awk-and-me-2014.pdf |title=GNU प्रोजेक्ट और मैं: GNU AWK के साथ 27 साल|website=skeeve.com |first=Arnold |last=Robbins |date=March 2014 |access-date=October 4, 2014 |archive-date=October 6, 2014 |archive-url=https://web.archive.org/web/20141006081656/http://www.skeeve.com/gnu-awk-and-me-2014.pdf |url-status=live }}</ref> ब्रायन कर्निघन का नॉक (न्यू एडब्ल्यूके) स्रोत पहली बार 1993 में अप्रकाशित और 1990 के दशक के अंत से सार्वजनिक रूप से जारी किया गया था; कई बीएसडी व्यवस्था जीपीएल अनुज्ञा पत्र से बचने के लिए इसका इस्तेमाल करते हैं।<ref name="robbins" />
[[संस्करण 7 यूनिक्स]] में प्रकट होने वाले शुरुआती उपकरणों में से एक के रूप में,एडब्ल्यूके ने [[बॉर्न शेल]] के अलावा एक यूनिक्स पाइपलाइन में गणितीय सुविधाएँ जोड़ीं, जो मानक यूनिक्स वातावरण में उपलब्ध एकमात्र पटकथा भाषा है। यह [[एकल यूनिक्स विशिष्टता]] की अनिवार्य उपयोगिताओं में से एक है,<ref>{{Cite web |url=http://www.unix.org/version3/apis/cu.html |title=एकल यूनिक्स विशिष्टता, संस्करण 3, यूटिलिटीज इंटरफेस टेबल|access-date=2005-12-18 |archive-url=https://web.archive.org/web/20180105030249/http://www.unix.org/version3/apis/cu.html |archive-date=2018-01-05 |url-status=dead }}</ref> और लिनक्स मानक आधार विनिर्देश द्वारा आवश्यक है।<ref>{{cite techreport |url=https://refspecs.linuxfoundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic.html#COMMAND |title=लिनक्स मानक आधार कोर विशिष्टता 4.0|chapter=Chapter 15. Commands and Utilities |institution=Linux Foundation |date=2008 |access-date=2020-02-01 |archive-date=2019-10-16 |archive-url=https://web.archive.org/web/20191016015828/https://refspecs.linuxfoundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic.html#COMMAND |url-status=live }}</ref>एडब्ल्यूके को 1985-88 में महत्वपूर्ण रूप से संशोधित और विस्तारित किया गया था,जिसके परिणामस्वरूप 1988 में जारी पॉल रूबिन [[जे फेनलसन]] और [[रिचर्ड स्टालमैन]] द्वारा लिखित गॉक(GNU पैकेज) कार्यान्वयन हुआ।<ref name="robbins" />जीएनयू एडब्ल्यूके सबसे व्यापक रूप से तैनात संस्करण हो सकता है<ref>{{cite book|last1=Dougherty|first1=Dale|last2=Robbins|first2=Arnold|title=मास्टर और ओक|date=1997|publisher=O'Reilly|location=Sebastopol, CA|isbn=1-565-92225-5|page=221|edition=2nd}}</ref> क्योंकि यह जीएनयू-आधारित लिनक्स पैकेज में सम्मिलित है। 1994 से केवल [[अर्नोल्ड रॉबिंस]] ने जीएनयू एडब्ल्यूके को बनाए रखा गया है।<ref name="robbins">{{cite web |url=http://www.skeeve.com/gnu-awk-and-me-2014.pdf |title=GNU प्रोजेक्ट और मैं: GNU AWK के साथ 27 साल|website=skeeve.com |first=Arnold |last=Robbins |date=March 2014 |access-date=October 4, 2014 |archive-date=October 6, 2014 |archive-url=https://web.archive.org/web/20141006081656/http://www.skeeve.com/gnu-awk-and-me-2014.pdf |url-status=live }}</ref> ब्रायन कर्निघन का नॉक (न्यू एडब्ल्यूके) स्रोत पहली बार 1993 में अप्रकाशित और 1990 के दशक के अंत से सार्वजनिक रूप से जारी किया गया था; कई बीएसडी व्यवस्था जीपीएल अनुज्ञा पत्र से बचने के लिए इसका इस्तेमाल करते हैं।<ref name="robbins" />


एडब्ल्यूके [[sed|सेड]](1974) से पहले था। दोनों को पाठ प्रसंस्करण के लिए रचित किया गया था। वे पंक्ति-उन्मुख,डेटा-संचालित प्रतिमान साझा करते हैं,और अंतर्निहित मुख्य लूप और मौजूदा पंक्ति चर के अंतर्निहित एक-पंक्तिय प्रोग्राम लिखने के लिए विशेष रूप से उपयुक्त हैं। प्रारंभिक एडब्ल्यूके कार्यक्रमों की शक्ति और कठोरता और साथ में उस समय एडब्ल्यूके की सीमाएं- विशेष रूप से शक्तिशाली नियमित अभिव्यक्ति से निपटने और निहित चर के कारण संक्षिप्तता,जो एक-पंक्तिय सुविधा प्रदान करते हैं - [[पर्ल]] भाषा (1987) के लिए महत्वपूर्ण प्रेरणा थीं। 1990 के दशक में,पर्ल बहुत लोकप्रिय हो गया था, यूनिक्स पाठ-प्रसंस्करण भाषाओं के सन्दर्भ में एडब्ल्यूके साथ प्रतिस्पर्धा कर रहा था।
एडब्ल्यूके [[sed|सेड]](1974) से पहले था। दोनों को पाठ प्रसंस्करण के लिए रचित किया गया था। वे पंक्ति-उन्मुख,जानकारी-संचालित प्रतिमान साझा करते हैं,और अंतर्निहित मुख्य लूप और मौजूदा पंक्ति चर के अंतर्निहित एक-पंक्तिय प्रोग्राम लिखने के लिए विशेष रूप से उपयुक्त हैं। प्रारंभिक एडब्ल्यूके कार्यक्रमों की शक्ति और कठोरता और साथ में उस समय एडब्ल्यूके की सीमाएं- विशेष रूप से शक्तिशाली नियमित अभिव्यक्ति से निपटने और निहित चर के कारण संक्षिप्तता,जो एक-पंक्तिय सुविधा प्रदान करते हैं - [[पर्ल]] भाषा (1987) के लिए महत्वपूर्ण प्रेरणा थीं। 1990 के दशक में,पर्ल बहुत लोकप्रिय हो गया था,यूनिक्स पाठ-प्रसंस्करण भाषाओं के सन्दर्भ में एडब्ल्यूके साथ प्रतिस्पर्धा कर रहा था।


== '''<big>एडब्ल्यूके कार्यक्रमों की संरचना</big>''' ==
== '''<big>एडब्ल्यूके कार्यक्रमों की संरचना</big>''' ==
Line 70: Line 31:
-  -      
-  -      


एडब्ल्यूके प्रोग्राम प्रतिरूप गतिविधि जोड़े की एक श्रृंखला है, जिसे इस प्रकार लिखा गया है:</blockquote>स्थिति गतिविधि }  
एडब्ल्यूके प्रोग्राम प्रतिरूप गतिविधि जोड़े का एक पैटर्न है,जिसे इस प्रकार लिखा गया है:</blockquote>  
  condition { action }
  condition { action }
...


स्थिति {  गतिविधि  } ..
जहां स्थिति सामान्यतः एक अभिव्यक्ति है और क्रिया आदेशों का एक पैटर्न है। निविष्ट को अभिलेख में विभाजित किया जाता है,जहां पूर्वनिर्धारित रूप से अभिलेख को नई पंक्ति वर्णों से अलग किया जाता है ताकि निविष्ट को पंक्तियों में विभाजित किया जा सके। कार्यक्रम बदले में प्रत्येक स्थिति के विरुद्ध प्रत्येक अभिलेख का परीक्षण करता है,और प्रत्येक सत्य अभिव्यक्ति के लिए क्रिया निष्पादित करता है या क्रिया को छोड़ा जा सकता है।यह स्तिथि सभी अभिलेख से मेल खाने के लिए बाध्य है। अभिलेख को छापना महत्वपूर्ण क्रिया है। यह सेड के समान पैटर्न-क्रिया संरचना है।


जहां स्थिति सामान्यतौर पर एक अभिव्यक्ति है और क्रिया आदेशों की एक श्रृंखला है। निविष्ट को अभिलेख में विभाजित किया जाता है,जहां डिफ़ॉल्ट रूप से अभिलेख को नई पंक्ति वर्णों से अलग किया जाता है ताकि  निविष्ट को पंक्तियों  में विभाजित किया जा सके। कार्यक्रम बदले में प्रत्येक स्थिति के विरुद्ध प्रत्येक अभिलेख का परीक्षण करता है,और प्रत्येक सत्य अभिव्यक्ति के लिए क्रिया निष्पादित करता है /या तो शर्त या क्रिया को छोड़ा जा सकता है। स्तिथि सभी अभिलेख से मेल खाने के लिए बाध्य है। अभिलेख को छापना महत्वपूर्ण क्रिया है। यह सेड के समान श्रृंखला-क्रिया संरचना है।
एक साधारण एडब्ल्यूके अभिव्यक्ति के अलावा,जैसे <code>foo == 1</code> या <code>/^foo/</code>स्थिति हो सकती है <code>BEGIN</code> या <code>END</code> सभी अभिलेख पढ़ने से पहले या बाद में कार्रवाई को निष्पादित करने का कारण बनता है,या पैटर्न1,पैटर्न2 जो एक अभिलेख से प्रारम्भ होने वाले अभिलेख की श्रेणी से मेल खाता है जो पैटर्न1 से मेल खाता है और उस अभिलेख को सम्मिलित करता है जो पैटर्न 2 से मेल खाता है और बाद की पंक्तियों को पैटर्न1 के विपरीत फिर से मिलान करने का प्रयास करता है।


एक साधारण एडब्ल्यूके अभिव्यक्ति के अलावा, जैसे <code>foo == 1</code> या <code>/^foo/</code>स्थिति हो सकती है <code>BEGIN</code> या <code>END</code> सभी अभिलेख पढ़ने से पहले या बाद में कार्रवाई को निष्पादित करने का कारण बनता है, या श्रृंखला 1, श्रृंखला 2 जो एक अभिलेख से शुरू होने वाले अभिलेख की श्रेणी से मेल खाता है जो श्रृंखला1 से मेल खाता है और उस अभिलेख को शामिल करता है जो श्रृंखला 2 से मेल खाता है और बाद की पंक्तियों को श्रृंखला 1 के विपरीत फिर से मिलान करने का प्रयास करता है।
सामान्य अंकगणितीय और तार्किक संचालकों के अलावा,एडब्ल्यूके अभिव्यक्ति में टिल्ड संचालक सम्मिलित है, <code>~</code>, जो एक पैटर्न के विपरीत एक नियमित अभिव्यक्ति से मेल खाता है। सुविधाजनक [[सिंटैक्टिक चीनी]] के रूप में, /regexp/ टिल्ड संचालक का उपयोग किए बिना मौजूदा रिकॉर्ड के विपरीत मेल खाता है; यह सिंटैक्स sed से निकला है,जो बदले में इसे एड (टेक्स्ट एडिटर) संपादक से विरासत में मिला है, जहाँ <code>/</code> खोजने के लिए प्रयोग किया जाता है। नियमित अभिव्यक्ति के लिए [[सीमांकक]] के रूप में स्लैश का उपयोग करने का यह सिंटैक्स बाद में पर्ल और ईसीएमए पटकथा द्वारा अपनाया गया था,और अब जन साधारण है। पर्ल द्वारा टिल्ड संचालक को भी अपनाया गया था।
 
सामान्य अंकगणितीय और तार्किक संचालकों के अलावा, एडब्ल्यूके अभिव्यक्ति में टिल्ड संचालक शामिल है, <code>~</code>, जो एक श्रृंखला के विपरीत एक नियमित अभिव्यक्ति से मेल खाता है। सुविधाजनक [[सिंटैक्टिक चीनी]] के रूप में, /regexp/ टिल्ड संचालक का उपयोग किए बिना मौजूदा रिकॉर्ड के विपरीत मेल खाता है; यह सिंटैक्स sed से निकला है, जो बदले में इसे एड (टेक्स्ट एडिटर) संपादक से विरासत में मिला है, जहाँ <code>/</code> खोजने के लिए प्रयोग किया जाता है। नियमित अभिव्यक्ति के लिए [[सीमांकक]] के रूप में स्लैश का उपयोग करने का यह सिंटैक्स बाद में पर्ल और ईसीएमए पटकथा द्वारा अपनाया गया था,और अब जन साधारण है। पर्ल द्वारा टिल्ड संचालक को भी अपनाया गया था।


== आदेश ==
== आदेश ==


एडब्ल्यूके कमांड वे कथन हैं जो उपरोक्त उदाहरणों में कार्रवाई के लिए प्रतिस्थापित किए गए हैं। एडब्ल्यूके आदेश में कार्य आह्वान (फंक्शन कॉल ),चर कार्यभार,गणना,या कोई संयोजन शामिल हो सकता है।एडब्ल्यूके में कई कार्यों के लिए अंतर्निहित समर्थन शामिल है;एडब्ल्यूके के विभिन्न प्रतिभा द्वारा और भी बहुत कुछ प्रदान किया जाता है। साथ ही, कुछ प्रतिभा [[गतिशील रूप से लिंक की गई लाइब्रेरी|गतिशील रूप से जोड़ी गई लाइब्रेरी]] को शामिल करने का समर्थन करते हैं, जो अधिक फ़ंक्शन भी प्रदान कर सकता है।
एडब्ल्यूके कमांड वे कथन हैं जो उपरोक्त उदाहरणों में कार्रवाई के लिए प्रतिस्थापित किए गए हैं। एडब्ल्यूके आदेश में कार्य आह्वान (फंक्शन कॉल),चर कार्यभार,गणना,या कोई संयोजन सम्मिलित हो सकता है। एडब्ल्यूके में कई कार्यों के लिए अंतर्निहित समर्थन सम्मिलित है;एडब्ल्यूके के विभिन्न प्रतिभा द्वारा और भी बहुत कुछ प्रदान किया जाता है। साथ ही,कुछ प्रतिभा [[गतिशील रूप से लिंक की गई लाइब्रेरी|गतिशील रूप से जोड़ी गई लाइब्रेरी]] को सम्मिलित करने का समर्थन करते हैं,जो अधिक कार्य भी प्रदान कर सकता है।


=== <u>प्रिंट आदेश</u> ===
=== <u>प्रिंट आदेश</u> ===


प्रिंट आदेश का उपयोग लिखित सामग्री को उत्पादन करने के लिए किया जाता है। उत्पादित लिखित सामग्री हमेशा एक पूर्वनिर्धारित श्रृंखला के साथ समाप्त होता है जिसे श्रृंखला अभिलेख विभाजक (ओआरएस) कहा जाता है जिसका पूर्वनिर्धारित मान एक नई पंक्ति है। इस आदेश का सबसे सरल रूप है:
प्रिंट आदेश का उपयोग लिखित सामग्री को उत्पादन करने के लिए किया जाता है। उत्पादित लिखित सामग्री हमेशा एक पूर्वनिर्धारित पैटर्न के साथ समाप्त होता है जिसे पैटर्न अभिलेख विभाजक (ओआरएस) कहा जाता है जिसका पूर्वनिर्धारित मान एक नई पंक्ति है। इस आदेश का सबसे सरल रूप है:


; <code>print</code>
; <code>print</code>
Line 93: Line 55:
: मौजूदा अभिलेख का पहला क्षेत्र प्रदर्शित करता है
: मौजूदा अभिलेख का पहला क्षेत्र प्रदर्शित करता है
; <code>print $1, $3</code>
; <code>print $1, $3</code>
: मौजूदा अभिलेख के पहले और तीसरे क्षेत्र को प्रदर्शित करता है, जिसे एक पूर्वनिर्धारित श्रृंखला द्वारा अलग किया जाता है जिसे उत्पादन क्षेत्र विभाजक (OFS) कहा जाता है, जिसका पूर्वनिर्धारित मान एक अन्तर वर्ण है।
: मौजूदा अभिलेख के पहले और तीसरे क्षेत्र को प्रदर्शित करता है,जिसे एक पूर्वनिर्धारित पैटर्न द्वारा अलग किया जाता है और जिसे उत्पादन क्षेत्र विभाजक (OFS) कहा जाता है,जिसका पूर्वनिर्धारित मान एक अन्तर वर्ण है।


हालांकि ये क्षेत्र ($X) चर के समान हो सकते हैं ($ प्रतीक पर्ल में चर को इंगित करता है), वे वास्तव में मौजूदा अभिलेख के क्षेत्र को संदर्भित करते हैं। एक विशेष अवस्था मे, $0, पूरे अभिलेख को संदर्भित करता है। वास्तव में, आदेश<code>print</code>तथा<code>print $0</code>कार्यक्षमता में समान हैं।
हालांकि ये क्षेत्र ($X) चर के समान हो सकते हैं ($ प्रतीक पर्ल में चर को इंगित करता है),वे वास्तव में मौजूदा अभिलेख के क्षेत्र को संदर्भित करते हैं। एक विशेष अवस्था मे, $0, पूरे अभिलेख को संदर्भित करता है। वास्तव में, आदेश<code>print</code>तथा<code>print $0</code>कार्यक्षमता में समान हैं।


प्रिंट आदेश गणना और/या कार्य आह्वान के परिणाम भी प्रदर्शित कर सकता है:
प्रिंट आदेश गणना और/या कार्य आह्वान के परिणाम भी प्रदर्शित कर सकता है:
 
/regex_pattern/ {
<वाक्यविन्यास लैंग = awk>
    # Actions to perform in the event the record (line) matches the above regex_pattern
/regex_pattern/ {
    print 3+2
    # रिकॉर्ड (पंक्ति) उपरोक्त regex_pattern से मेल खाने की स्थिति में प्रदर्शन करने के लिए कार्य
    print foobar(3)
    3+2 प्रिंट करें
    print foobar(variable)
    फ़ोबार प्रिंट करें(3)
    print sin(3-2)
    प्रिंट फोबार (चर)
}
    प्रिंट पाप (3-2)
निविष्ट फाइल मे भेजा जा सकता है:
}
  /regex_pattern/ {
</वाक्यविन्यास हाइलाइट>
    # Actions to perform in the event the record (line) matches the above regex_pattern
 
    print "expression" > "file name"
उत्पादन फ़ाइल में भेजा जा सकता है:
}
<वाक्यविन्यास लैंग = awk>
या पाइप के माध्यम से
/regex_pattern/ {
  /regex_pattern/ {
    # रिकॉर्ड (पंक्ति) उपरोक्त regex_pattern से मेल खाने की स्थिति में प्रदर्शन करने के लिए कार्य
    # Actions to perform in the event the record (line) matches the above regex_pattern
    प्रिंट अभिव्यक्ति> फ़ाइल का नाम
    print "expression" | "command"
}
}
</वाक्यविन्यास हाइलाइट>
 
या एक पाइप के माध्यम से (यूनिक्स):
<वाक्यविन्यास लैंग = awk>
/regex_pattern/ {
    # रिकॉर्ड (पंक्ति) उपरोक्त regex_pattern से मेल खाने की स्थिति में प्रदर्शन करने के लिए कार्य
    प्रिंट अभिव्यक्ति | आज्ञा
}
</वाक्यविन्यास हाइलाइट>
 
=== <u>अंतर्निहित चर</u> ===
=== <u>अंतर्निहित चर</u> ===


एडब्ल्यूके के <u>अंतर्निहित चर</u> में क्षेत्र <u>चर</u> शामिल हैं: $1, $2, $3, और इसी तरह ($0 पूरे अभिलेख का प्रतिनिधित्व करता है)। वे अभिलेख में अलग-अलग लिखित सामग्री क्षेत्र में लिखित सामग्री या मान रखते हैं।
एडब्ल्यूके के <u>अंतर्निहित चर</u> में क्षेत्र <u>चर</u> सम्मिलित हैं: $1, $2, $3, और इसी तरह ($0 पूरे अभिलेख का प्रतिनिधित्व करता है)। वे अभिलेख में अलग-अलग लिखित सामग्री क्षेत्र में लिखित सामग्री या मान रखते हैं।


अन्य चर में शामिल हैं:
अन्य चर में सम्मिलित हैं:
* <code>NR</code>: अभिलेखों की संख्या। सभी डेटा फ़ाइलों से अब तक पढ़े गए निविष्ट अभिलेख की संख्या की मौजूदा गणना रखता है। यह शून्य से शुरू होता है, लेकिन कभी भी स्वचालित रूप से शून्य पर फिर से स्थापित नहीं होता है।<ref name="GNU.org Records">{{Cite web|url=https://www.gnu.org/software/gawk/manual/html_node/Records.html#index-FNR-variable|title=रिकॉर्ड्स (GNU Awk यूजर गाइड)|access-date=2020-05-23|archive-date=2020-06-14|archive-url=https://web.archive.org/web/20200614234208/https://www.gnu.org/software/gawk/manual/html_node/Records.html#index-FNR-variable|url-status=live}}</ref>
* <code>NR</code>: अभिलेखों की संख्या। सभी जानकारी फ़ाइलों से अब तक पढ़े गए निविष्ट अभिलेख की संख्या की मौजूदा गणना रखता है। यह शून्य से प्रारम्भ होता है,लेकिन कभी भी स्वचालित रूप से शून्य पर फिर से स्थापित नहीं होता है।<ref name="GNU.org Records">{{Cite web|url=https://www.gnu.org/software/gawk/manual/html_node/Records.html#index-FNR-variable|title=रिकॉर्ड्स (GNU Awk यूजर गाइड)|access-date=2020-05-23|archive-date=2020-06-14|archive-url=https://web.archive.org/web/20200614234208/https://www.gnu.org/software/gawk/manual/html_node/Records.html#index-FNR-variable|url-status=live}}</ref>
* <code>FNR</code>: अभिलेख की फ़ाइल संख्या। मौजूदा फ़ाइल में अब तक पढ़े गए निविष्ट अभिलेख की संख्या की तत्काल गणना रखता है। हर बार जब कोई नई फ़ाइल शुरू होती है तो यह चर स्वचालित रूप से शून्य पर फिर से स्थापित हो जाता है।<ref name="GNU.org Records" />* <code>NF</code>: क्षेत्रों की संख्या। मौजूदा निविष्ट अभिलेख में क्षेत्र की संख्या शामिल है।  निविष्ट अभिलेख में अंतिम क्षेत्र को $NF, दूसरे से अंतिम क्षेत्र को $(NF-1), तीसरे से अंतिम क्षेत्र को $(NF-2), आदि द्वारा निर्दिष्ट किया जा सकता है।
* <code>FNR</code>: अभिलेख की फ़ाइल संख्या। मौजूदा फ़ाइल में अब तक पढ़े गए निविष्ट अभिलेख की संख्या की तत्काल गणना रखता है। हर बार जब कोई नई फ़ाइल प्रारम्भ होती है तो यह चर स्वचालित रूप से शून्य पर फिर से स्थापित हो जाता है।<ref name="GNU.org Records" />
*<code>NF</code>: क्षेत्रों की संख्या। मौजूदा निविष्ट अभिलेख में क्षेत्र की संख्या सम्मिलित है।निविष्ट अभिलेख में अंतिम क्षेत्र को $NF, दूसरे से अंतिम क्षेत्र को $(NF-1),तीसरे से अंतिम क्षेत्र को $(NF-2), आदि द्वारा निर्दिष्ट किया जा सकता है।
* <code>FILENAME</code>: मौजूदा  निविष्ट-फ़ाइल का नाम समाहित करता है।
* <code>FILENAME</code>: मौजूदा  निविष्ट-फ़ाइल का नाम समाहित करता है।
* <code>FS</code>: क्षेत्र विभाजक। निविष्ट अभिलेखमें क्षेत्र को विभाजित करने के लिए उपयोग किए जाने वाले क्षेत्र विभाजक शामिल हैं। पूर्वस्थापित,सफेद स्थान और टैब वर्णों के किसी भी क्रम की अनुमति देता है। क्षेत्र विभाजक को बदलने के लिए FS को किसी अन्य वर्ण या वर्ण अनुक्रम के साथ पुन: सौंपा जा सकता है।
* <code>FS</code>: क्षेत्र विभाजक। निविष्ट अभिलेखमें क्षेत्र को विभाजित करने के लिए उपयोग किए जाने वाले क्षेत्र विभाजक सम्मिलित हैं। पूर्वस्थापित,[[व्हाइटस्पेस चरित्र|श्वेत]] स्थान और टैब वर्णों के किसी भी क्रम की अनुमति देता है। क्षेत्र विभाजक को बदलने के लिए FS को किसी अन्य वर्ण या वर्ण अनुक्रम के साथ पुन: सौंपा जा सकता है।
* <code>RS</code>:अभिलेख विभाजक। मौजूदा अभिलेख विभाजक चरित्र को संग्रहीत करता है। चूंकि, पूर्वस्थापित रूप से,एक निविष्ट पंक्ति निविष्ट अभिलेख है, क्षेत्र अभिलेख पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
* <code>RS</code>:अभिलेख विभाजक। मौजूदा अभिलेख विभाजक चरित्र को संग्रहीत करता है। चूंकि, पूर्वस्थापित रूप से,एक निविष्ट पंक्ति निविष्ट अभिलेख है,क्षेत्र अभिलेख पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
* <code>OFS:</code> उत्पादन क्षेत्र विभाजक। उत्पादन क्षेत्र विभाजक को संग्रहीत करता है, जो क्षेत्र को तब अलग करता है जब एडब्ल्यूके उन्हें छापता है। पूर्वस्थापित एक स्थान वर्ण है।
* <code>OFS:</code>उत्पादन क्षेत्र विभाजक। उत्पादन क्षेत्र विभाजक को संग्रहीत करता है,जो क्षेत्र को तब अलग करता है जब एडब्ल्यूके उन्हें छापता है। एक स्थान वर्ण पूर्वस्थापित  है।
* <code>ORS</code>: उत्पादन अभिलेख विभाजक। उत्पादन अभिलेख विभाजक को संग्रहीत करता है, जो उत्पादन अभिलेख को तब अलग करता है जब  एडब्ल्यूके उन्हें छापता है। पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
* <code>ORS</code>: उत्पादन अभिलेख विभाजक। उत्पादन अभिलेख विभाजक को संग्रहीत करता है,जो उत्पादन अभिलेख को तब अलग करता है जब  एडब्ल्यूके उन्हें छापता है। पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
* <code>OFMT</code>: उत्पादन स्वरूप। संख्यात्मक उत्पादन के लिए प्रारूप को संगृहीत  करता है। पूर्वस्थापित प्रारूप %.6g है।
* <code>OFMT</code>: उत्पादन स्वरूप। संख्यात्मक उत्पादन के लिए प्रारूप को संगृहीत  करता है। पूर्वस्थापित प्रारूप %.6g है।


=== चर और वाक्य रचना ===
=== चर और वाक्य रचना ===


चर नाम किसी भी अक्षर [A-Za-z0-9_] का उपयोग कर सकते हैं, भाषा सूचक शब्द के अपवाद के साथ। संचालको + - * / क्रमशः जोड़, घटाव, गुणा और भाग का प्रतिनिधित्व करते हैं। श्रृंखला संघनन के लिए,बस दो चर एक दूसरे के नज़दीक में रखें। यदि श्रृंखला स्थिरांक शामिल हैं, तो बीच में एक स्थान का उपयोग करना वैकल्पिक है, लेकिन एक दूसरे से सटे हुए दो चर नामों के बीच में एक स्थान की आवश्यकता होती है। दोहरे उद्धरण श्रृंखला स्थिरांक का सीमांकन करते हैं। व्याख्यान को अर्धविरामों के साथ समाप्त करने की आवश्यकता नहीं है। अंत में, एक पंक्ति पर पहले वर्ण के रूप में # का उपयोग करके कार्यक्रमों में टिप्पणियां जोड़ी जा सकती हैं।
चर नाम किसी भी अक्षर [A-Za-z0-9_] का उपयोग कर सकते हैं, भाषा सूचक शब्द के अपवाद के साथ। संचालको + - * / क्रमशः जोड़, घटाव,गुणा और भाग का प्रतिनिधित्व करते हैं। पैटर्न संघनन के लिए,बस दो चर एक दूसरे के नज़दीक में रखें। यदि पैटर्न स्थिरांक सम्मिलित हैं, बीच में एक स्थान का उपयोग करना वैकल्पिक है,लेकिन एक दूसरे से सटे हुए दो चर नामों के बीच में एक स्थान की आवश्यकता होती है। दोहरे उद्धरण पैटर्न स्थिरांक का सीमांकन करते हैं। व्याख्यान को अर्धविरामों के साथ समाप्त करने की आवश्यकता नहीं है। अंत में,एक पंक्ति पर पहले वर्ण के रूप में # का उपयोग करके कार्यक्रमों में टिप्पणियां जोड़ी जा सकती हैं।


=== उपयोगकर्ता परिभाषित कार्य ===
=== उपयोगकर्ता परिभाषित कार्य ===


[[सी (प्रोग्रामिंग भाषा)]] के समान प्रारूप में, फ़ंक्शन परिभाषाओं में कीवर्ड शामिल होता है <code>function</code>, कार्य नाम, तर्क नाम और यहाँ एक फ़ंक्शन का उदाहरण दिया गया है।
[[सी (प्रोग्रामिंग भाषा)]] के समान प्रारूप में, फ़ंक्शन परिभाषाओं में कीवर्ड सम्मिलित होता है <code>function</code>, कार्य नाम,तर्क नाम और यहाँ एक फ़ंक्शन का उदाहरण दिया गया है।
 
function add_three (number) {
<वाक्यविन्यास लैंग = awk>
    return number + 3
 
}
समारोह add_three (संख्या) {
This
    वापसी संख्या + 3
}
</वाक्यविन्यास हाइलाइट>
 
इस कथन को निम्नानुसार लागू किया जा सकता है:
इस कथन को निम्नानुसार लागू किया जा सकता है:
<वाक्यविन्यास लैंग = awk>
(pattern) {
(नमूना) {
<nowiki> </nowiki>  print add_three(36)     # Outputs <nowiki>'''</nowiki>39<nowiki>'''</nowiki>
  प्रिंट ऐड_थ्री (36) # आउटपुट 39
}
}
फ़ंक्शंस में चर हो सकते हैं जो स्थानीय दायरे में हैं। इनके नाम तर्क सूची के अंत में जोड़े जाते हैं,हालांकि फ़ंक्शन को आव्हान करते समय इनके लिए मान छोड़े जाने चाहिए। स्थानीय चर से पहले तर्क सूची में कुछ [[व्हाइटस्पेस चरित्र|श्वेत स्थान चरित्र]] जोड़ने के लिए यह अतिआवश्यक है,यह इंगित करने के लिए कि मापदंड कहां समाप्त होते हैं और स्थानीय चर प्रारम्भ होते हैं।
</वाक्यविन्यास हाइलाइट>
 
फ़ंक्शंस में चर हो सकते हैं जो स्थानीय दायरे में हैं। इनके नाम तर्क सूची के अंत में जोड़े जाते हैं, हालांकि फ़ंक्शन को आव्हान करते समय इनके लिए मान छोड़े जाने चाहिए। स्थानीय चर से पहले तर्क सूची में कुछ [[व्हाइटस्पेस चरित्र|सफेद स्थान चरित्र]] जोड़ने के लिए यह अतिआवश्यक है, यह इंगित करने के लिए कि मापदंड कहां समाप्त होते हैं और स्थानीय चर शुरू होते हैं।


== उदाहरण ==
== उदाहरण ==


=== नमस्ते दुनिया ===
=== हेलो वर्ल्ड ===
 
यहाँ प्रथागत हैलो, वर्ल्ड है! प्रोग्राम नमस्ते दुनिया कार्यक्रम एडब्ल्यूके में लिखा गया है:
 
<वाक्यविन्यास लैंग = awk>
शुरू करना {
        प्रिंट हैलो, दुनिया!
        बाहर निकलना
}
</वाक्यविन्यास हाइलाइट>


यहाँ प्रथागत हैलो,वर्ल्ड है! प्रोग्राम नमस्ते दुनिया कार्यक्रम एडब्ल्यूके में लिखा गया है:
    BEGIN {
        print "Hello, world!"
        exit
}
=== 80 वर्णों से अधिक लंबी लाइनें === प्रिंट करें
=== 80 वर्णों से अधिक लंबी लाइनें === प्रिंट करें


80 वर्णों से अधिक लंबी सभी पंक्तियों को प्रिंट करें। ध्यान दें कि डिफ़ॉल्ट क्रिया वर्तमान लाइन को प्रिंट करना है।
80 वर्णों से अधिक लंबी सभी पंक्तियों को प्रिंट करें। ध्यान दें कि पूर्वस्थापित क्रिया मौजूदा पंक्ति को छापता है।
<वाक्यविन्यास लैंग = awk>
length($0) > 80
लंबाई($0) > 80
</वाक्यविन्यास हाइलाइट>


=== शब्द गिनें ===
=== शब्द गणना ===


इनपुट में शब्दों की गणना करें और पंक्तियों, शब्दों और वर्णों की संख्या प्रिंट करें (जैसे wc (यूनिक्स)):
निविष्ट में शब्दों की गणना करें और पंक्तियों,शब्दों और वर्णों की संख्या छापे (जैसे wc (यूनिक्स)):
<वाक्यविन्यास लैंग = awk>
<वाक्यविन्यास लैंग = awk>
{
{
    शब्द + = एनएफ
  {
    वर्ण + = लंबाई + 1 # प्रत्येक रिकॉर्ड (पंक्ति) के अंत में न्यूलाइन वर्ण के लिए खाते में एक जोड़ें
    words += NF
}
    chars += length + 1 # add one to account for the newline character at the end of each record (line)
END {प्रिंट एनआर, शब्द, वर्ण}
}
</वाक्यविन्यास हाइलाइट>
END { print NR, words, chars }
 
चूंकि कार्यक्रम की पहली पंक्ति के लिए कोई पैटर्न नहीं है,निविष्ट की प्रत्येक पंक्ति पूर्वानिर्धारित रूप से मेल खाती है,इसलिए प्रत्येक पंक्ति के लिए वृद्धि क्रियाएं निष्पादित की जाती हैं। ध्यान दें कि <code>words += NF</code> के लिए आशुलिपि है <code>words = words + NF</code>.
चूंकि कार्यक्रम की पहली पंक्ति के लिए कोई श्रृंखला नहीं है, निविष्ट की प्रत्येक पंक्ति पूर्वानिर्धारित रूप से मेल खाती है, इसलिए प्रत्येक पंक्ति के लिए वृद्धि क्रियाएं निष्पादित की जाती हैं। ध्यान दें कि <code>words += NF</code> के लिए आशुलिपि है <code>words = words + NF</code>.


=== अंतिम शब्द का योग ===
=== अंतिम शब्द का योग ===
{ s += $NF }
END { print s + 0 }
s को $NF के सांख्यिक मान से बढ़ाया जाता है,जो एडब्ल्यूके के क्षेत्र विभाजक (पूर्वनिर्धारित रूप से,श्वेत् स्थान) द्वारा परिभाषित रेखा पर अंतिम शब्द है। एनएफ मौजूदा पंक्ति में क्षेत्र की संख्या है,उदाहरण 4. चूँकि $4 चौथे क्षेत्र का मान है, $NF पंक्ति में अंतिम क्षेत्र का मान है,इस बात की परवाह किए बिना कि इस रेखा में कितने क्षेत्र हैं,या इसमें आस-पास की रेखाओं की तुलना में अधिक या कम क्षेत्र हैं। $ वास्तव में उच्चतम संचालक प्राथमिकता वाला एक एकल संचालक है। (यदि पंक्ति में कोई क्षेत्र नहीं है, तो NF 0 है, $0 पूरी पंक्ति है, जो इस मामले में संभावित सफेद स्थान के अलावा खाली है, और इसलिए इसका संख्यात्मक मान 0 है।)


<वाक्यविन्यास लैंग = awk>
निविष्ट के अंत में END पैटर्न मेल खाता है,इसलिए s छापा जाता है। हालाँकि,एम निविष्ट की कोई पंक्ति नहीं हो सकती है,जिस स्थिति में कभी भी कोई मान निर्दिष्ट नहीं किया गया है,यह पूर्वनिर्धारित रूप से एक खाली स्ट्रिंग होगा। एक चर में शून्य जोड़ना एक एडब्ल्यूके वाक्यपद्दती है जो इसे एक पैटर्न से संख्यात्मक मान तक ले जाने के लिए बाध्य करता है। बाध्यता के साथ प्रोग्राम एक खाली निविष्ट है पर 0 छापता है, इसके बिना,एक खाली पंक्ति छपी है।
{एस + = $ एनएफ}
अंत {प्रिंट एस + 0}
</वाक्यविन्यास हाइलाइट>
 
s को $NF के सांख्यिक मान से बढ़ाया जाता है, जो एडब्ल्यूके के क्षेत्र विभाजक (पूर्वनिर्धारित रूप से,सफेद स्थान) द्वारा परिभाषित रेखा पर अंतिम शब्द है। एनएफ मौजूदा पंक्ति में क्षेत्र की संख्या है, उदाहरण 4. चूँकि $4 चौथे क्षेत्र का मान है, $NF पंक्ति में अंतिम क्षेत्र का मान है, इस बात की परवाह किए बिना कि इस रेखा में कितने क्षेत्र हैं, या इसमें आस-पास की रेखाओं की तुलना में अधिक या कम क्षेत्र हैं। $ वास्तव में उच्चतम संचालक प्राथमिकता वाला एक एकल संचालक है। (यदि पंक्ति में कोई क्षेत्र नहीं है, तो NF 0 है, $0 पूरी पंक्ति है, जो इस मामले में संभावित सफेद स्थान के अलावा खाली है, और इसलिए इसका संख्यात्मक मान 0 है।)
 
निविष्ट के अंत में END श्रृंखला मेल खाता है, इसलिए s छापा जाता है। हालाँकि, एम निविष्ट की कोई पंक्ति नहीं हो सकती है, जिस स्थिति में कभी भी कोई मान निर्दिष्ट नहीं किया गया है, यह पूर्वनिर्धारित रूप से एक खाली स्ट्रिंग होगा। एक चर में शून्य जोड़ना एक एडब्ल्यूके वाक्यपद्दती है जो इसे एक श्रृंखला से संख्यात्मक मान तक ले जाने के लिए बाध्य करता है। बाध्यता के साथ प्रोग्राम एक खाली निविष्ट है पर 0 छापता है, इसके बिना, एक खाली पंक्ति छपी है।
 
=== निविष्ट पंक्तियों की एक श्रृंखला का मिलान करें ===
<वाक्यविन्यास लैंग = awk>


एनआर% 4 == 1, एनआर% 4 == 3 {[[printf]]% 6d% s\n, एनआर, $0}
=== निविष्ट पंक्तियों की एक पैटर्न का मिलान करें ===
NR % 4 == 1, N % 4 == 3 { printf "%6d %s\n", NR, $0 }
कार्य विवरण प्रत्येक पंक्ति क्रमांकित छापता है। Printf फ़ंक्शन मानक C Printf का अनुकरण करता है और ऊपर वर्णित छापने के आदेश के समान कार्य करता है। हालांकि,मिलान करने के लिए पैटर्न में निम्नानुसार काम करता है: एनआर अभिलेखों की संख्या है,सामान्य तौर पर निविष्ट की पंक्तियां,यानी निविष्ट की पहली पंक्ति के लिए 1 से प्रारम्भ होने वाली मौजूदा पंक्ति संख्या % मापांक संचालक है। एनआर% 4 == 1 पहली, 5वीं, 9वीं, आदि, निविष्ट की पंक्तियों के लिए सत्य है। इसी प्रकार, एनआर% 4 == 3 निविष्ट की तीसरी, 7वीं, 11वीं, आदि के लिए सही है। क्रम पैटर्न  तब तक मान्य नहीं है जब तक कि पहला भाग पंक्ति 1 पर मेल नहीं खाता है,और तब तक सही रहता है और जब दूसरा भाग मेल खाता है, तब तक पंक्ति 3 पर होता है। यह तब तक अमान्य रहता है जब तक कि पहला भाग पंक्ति 5 पर फिर से मेल नहीं खाता।


</वाक्यविन्यास हाइलाइट>
इस प्रकार,प्रोग्राम 1,2,3 पंक्तियों को छापता है,रेखा 4 को छोड़ देता है,और फिर 5,6,7, और इसी तरह प्रत्येक पंक्ति के लिए,यह पंक्ति संख्या (6 वर्ण-चौड़े क्षेत्र पर) और फिर पंक्ति सामग्री को छापता है। उदाहरण के लिए,जब इस निविष्ट पर निष्पादित किया जाता है:
 
  Rome
कार्य विवरण प्रत्येक पंक्ति क्रमांकित छापता है। Printf फ़ंक्शन मानक C Printf का अनुकरण करता है और ऊपर वर्णित छापने के आदेश के समान कार्य करता है। हालांकि,मिलान करने के लिए श्रृंखला में निम्नानुसार काम करता है: एनआर अभिलेखों की संख्या है, सामान्य तौर पर निविष्ट की पंक्तियां, यानी निविष्ट की पहली पंक्ति के लिए 1 से शुरू होने वाली मौजूदा पंक्ति संख्या % मापांक संचालक है। एनआर% 4 == 1 पहली, 5वीं, 9वीं, आदि, इनपुट की पंक्तियों के लिए सत्य है। इसी प्रकार, एनआर% 4 == 3 इनपुट की तीसरी, 7वीं, 11वीं, आदि के लिए सही है। क्रम श्रृंखला तब तक मान्य नहीं है जब तक कि पहला भाग पंक्ति 1 पर मेल नहीं खाता है, और तब तक सही रहता है और जब दूसरा भाग मेल खाता है, तब तक पंक्ति 3 पर होता है। यह तब तक अमान्य रहता है जब तक कि पहला भाग पंक्ति 5 पर फिर से मेल नहीं खाता।
  Florence
 
  Milan
इस प्रकार, प्रोग्राम 1,2,3 पंक्तियों को छापता है, रेखा 4 को छोड़ देता है, और फिर 5,6,7, और इसी तरह प्रत्येक पंक्ति के लिए, यह पंक्ति संख्या (6 वर्ण-चौड़े क्षेत्र पर) और फिर पंक्ति सामग्री को छापता है। उदाहरण के लिए, जब इस निविष्ट पर निष्पादित किया जाता है:
  Naples
  रोम
  Turin
  फ़्लोरेंस
  Venice
  मिलन
  नेपल्स
  ट्यूरिन
  वेनिस


पिछला कार्यक्रम छापता है:
पिछला कार्यक्रम छापता है:
       1 रोम
       1 Rome
       2 फ्लोरेंस
       2 Florence
       3 मिलान
       3 Milan
       5 ट्यूरिन
       5 Turin
       6 वेनिस
       6 Venice


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


<वाक्यविन्यास लैंग = awk>
<वाक्यविन्यास लैंग = awk>
/^--यहां काटें--$/, 0
  /^--cut here--$/, 0
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>
रेगुलर एक्सप्रेशन ^--कट हियर--$ से मेल खाने वाली पहली पंक्ति से निविष्ट की पंक्ति प्रिंट करता है, यानी एक पंक्ति जिसमें केवल वाक्यांश --कट हियर-- होता है, अंत तक।
रेगुलर एक्सप्रेशन ^--कट हियर--$ से मेल खाने वाली पहली पंक्ति से निविष्ट की पंक्ति प्रिंट करता है,यानी एक पंक्ति जिसमें केवल वाक्यांश --यहाँ से काटो -- होता है,अंत तक।


=== [[शब्द आवृत्ति]]यों की गणना करें ===
=== [[शब्द आवृत्ति]]यों की गणना करें ===
Line 243: Line 173:
साहचर्य सरणियों का उपयोग करते हुए शब्द आवृत्ति:
साहचर्य सरणियों का उपयोग करते हुए शब्द आवृत्ति:
<वाक्यविन्यास लैंग = awk>
<वाक्यविन्यास लैंग = awk>
शुरू करना {
प्रारम्भ करना {
    एफएस = [^-जेडए-जेड]+
  BEGIN {
}
    FS="[^a-zA-Z]+"
{
}
    के लिए (i=1; i<=NF; i++)
{
        शब्द [tolower($i)]++
    for (i=1; i<=NF; i++)
}
        words[tolower($i)]++
समाप्त {
}
    के लिए (मैं शब्दों में)
END {
        प्रिंट मैं, शब्द [i]
    for (i in words)
}
        print i, words[i]
</वाक्यविन्यास हाइलाइट>
}
 
BEGIN ब्लॉक क्षेत्र विभाजक को बिना अंग्रेजी वर्णमाला के किसी भी क्रम में  समाहित करता है। ध्यान दें कि विभाजक नियमित अभिव्यक्ति हो सकते हैं। उसके बाद,हम एक अंतिम क्रिया पर जाते हैं,जो प्रत्येक निविष्ट पंक्ति पर क्रिया करता है। इस मामले में,पंक्ति पर प्रत्येक क्षेत्र के लिए, हम उस शब्द की संख्या में एक जोड़ देते हैं,जो पहले निचले स्तर में बदला गया शब्द प्रकट होता है। अंत में,END ब्लॉक में,हम शब्दों को उनकी आवृत्तियों के साथ छापते हैं। पंक्ति के लिए शब्दों में एक गांठ बनाता है जो सरणी शब्दों के माध्यम से जाता है i को सरणी के प्रत्येक उपपटकथा पर स्थित करता है। यह अधिकांश भाषाओं से अलग है,जहां ऐसा लूप सरणी में प्रत्येक मान से होकर जाता है। लूप इस प्रकार प्रत्येक शब्द को उसकी आवृत्ति गणना के बाद छापता है। टोलॉवेर पुस्तक प्रकाशित होने के बाद किए गए वन ट्रू ऑक में एक अतिरिक्त था।
BEGIN ब्लॉक क्षेत्र विभाजक को बिना अंग्रेजी वर्णमाला के किसी भी क्रम में  समाहित करता है। ध्यान दें कि विभाजक नियमित अभिव्यक्ति हो सकते हैं। उसके बाद, हम एक अंतिम क्रिया पर जाते हैं, जो प्रत्येक निविष्ट पंक्ति पर क्रिया करता है। इस मामले में, पंक्ति पर प्रत्येक क्षेत्र के लिए, हम उस शब्द की संख्या में एक जोड़ देते हैं, जो पहले निचले स्तर में बदला गया शब्द प्रकट होता है। अंत में, END ब्लॉक में, हम शब्दों को उनकी आवृत्तियों के साथ छापते हैं। पंक्ति
for (i in words)
के लिए (मैं शब्दों में)
इस कार्यक्रम को कई तरह से दर्शाया जा सकता है। पहले वाला सीप पटकथा बनाने के लिए छोटे सीप का उपयोग करता है जो सब कुछ करता है। यह इन विधियों में सबसे छोटा है:
एक लूप बनाता है जो सरणी शब्दों के माध्यम से जाता है, i को सरणी के प्रत्येक सबस्क्रिप्ट पर सेट करता है। यह अधिकांश भाषाओं से अलग है, जहां ऐसा लूप सरणी में प्रत्येक मान से होकर जाता है। लूप इस प्रकार प्रत्येक शब्द को उसकी आवृत्ति गणना के बाद प्रिंट करता है। <code>tolower</code> पुस्तक प्रकाशित होने के बाद किए गए वन ट्रू ऑक (नीचे देखें) में एक अतिरिक्त था।
#!/bin/sh
 
=== कमांड लाइन === से मैच पैटर्न
pattern="$1"
 
shift
इस कार्यक्रम को कई तरह से दर्शाया जा सकता है। पहले वाला शेल स्क्रिप्ट बनाने के लिए बॉर्न शेल का उपयोग करता है जो सब कुछ करता है। यह इन विधियों में सबसे छोटा है:
awk '/'"$pattern"'/ { print FILENAME ":" $0 }' "$@"
<वाक्यविन्यास लैंग = बैश>
#!/बिन/
 
पैटर्न = $1
पैटर्न = $1
खिसक जाना
शिफ्ट
awk '/' $pattern '/ { Print FILENAME : $0 }' $@
awk '/' $pattern '/ { Print FILENAME : $0 }' $@
</वाक्यविन्यास हाइलाइट> <code>$pattern</code> e> awk कमांड में सिंगल कोट्स द्वारा संरक्षित नहीं है ताकि शेल वेरिएबल का विस्तार करे लेकिन रिक्त स्थान वाले पैटर्न को ठीक से संभालने के लिए इसे डबल कोट्स में डालने की आवश्यकता है। सामान्य तरीके से एक पैटर्न यह देखने के लिए जांच करता है कि क्या पूरी लाइन (<code>$0</code>) मेल खाता है। <code>FILENAME</code> वर्तमान फ़ाइल नाम शामिल है। awk का कोई स्पष्ट संयोजन संचालिका नहीं है; दो निकटवर्ती तार उन्हें जोड़ते हैं। <code>$0</code> मूल अपरिवर्तित इनपुट लाइन तक फैलता है।
</वाक्यविन्यास हाइलाइट> <code>$pattern</code> e> एडब्ल्यूके आदेश में एकल कोट्स द्वारा संरक्षित नहीं है ताकि सीप चर का विस्तार करे लेकिन रिक्त स्थान वाले पैटर्न को ठीक से संभालने के लिए इसे दोहरे कोट्स में डालने की आवश्यकता है। सामान्य तरीके से एक पैटर्न यह देखने के लिए जांच करता है कि क्या पूरी पंक्ति (<code>$0</code>) मेल खाती है और मौजूदा फाइल का नाम सम्मिलित है। एडब्ल्यूके का कोई स्पष्ट संयोजन संचालिका नहीं है; दो निकटवर्ती तार उन्हें जोड़ते हैं। <code>$0</code>मूल अपरिवर्तित निविष्ट पंक्ति तक फैलता है।
 
इसे लिखने के वैकल्पिक तरीके हैं। यह शेल स्क्रिप्ट पर्यावरण को सीधे awk के भीतर से एक्सेस करती है:
<वाक्यविन्यास लैंग = बैश>
#!/बिन/श
 
निर्यात पैटर्न = $1
खिसक जाना
awk '$0 ~ ENVIRON[ pattern ] { Print FILENAME : $0 }' $@
</वाक्यविन्यास हाइलाइट>
 
यह एक शेल स्क्रिप्ट है जो उपयोग करती है <code>ENVIRON</code>, पुस्तक प्रकाशित होने के बाद One True awk के एक नए संस्करण में प्रस्तुत की गई एक सरणी। का सबस्क्रिप्ट <code>ENVIRON</code> एक पर्यावरण चर का नाम है; इसका परिणाम चर का मान है। यह विभिन्न मानक पुस्तकालयों और [[पॉज़िक्स]] में [[getenv]] फ़ंक्शन की तरह है। शेल स्क्रिप्ट एक पर्यावरण चर बनाती है <code>pattern</code> पहला तर्क शामिल है, फिर वह तर्क छोड़ देता है और प्रत्येक फ़ाइल में पैटर्न के लिए अजीब दिखता है।
 
<code>~</code> यह देखने के लिए जाँच करता है कि क्या उसका बायाँ ऑपरेंड उसके दाएँ ऑपरेंड से मेल खाता है; <code>!~</code> इसका उलटा है। ध्यान दें कि रेगुलर एक्सप्रेशन केवल एक स्ट्रिंग है और इसे वेरिएबल्स में संग्रहीत किया जा सकता है।


अगला तरीका कमांड-लाइन वेरिएबल असाइनमेंट का उपयोग करता है, जिसमें awk के तर्क को एक वेरिएबल के असाइनमेंट के रूप में देखा जा सकता है:
इसे लिखने के वैकल्पिक तरीके हैं। यह सीप पटकथा पर्यावरण को सीधे एडब्ल्यूके के भीतर से प्रवेश करती है:
<वाक्यविन्यास लैंग = बैश>
#!/bin/sh
#!/बिन/श
export pattern="$1"
shift
awk '$0 ~ ENVIRON["pattern"] { print FILENAME ":" $0 }' "$@"
यह एक सीप पटकथा है जो उपयोग करती है <code>ENVIRON</code>,पुस्तक प्रकाशित होने के बाद वन ट्रू ओक के एक नए संस्करण में प्रस्तुत की गई एक सरणी का पटकथा<code>ENVIRON</code> एक पर्यावरण चर का नाम है; इसका परिणाम चर का मान है। यह विभिन्न मानक पुस्तकालयों और [[पॉज़िक्स]] में [[getenv|सी प्रक्रिया नियंत्रण]] कार्य की तरह है। सीप पटकथा एक पर्यावरण चर बनाती है <code>pattern</code> पहला तर्क सम्मिलित है,फिर वह तर्क छोड़ देता है और प्रत्येक फ़ाइल में पैटर्न के लिए अजीब दिखता है।


पैटर्न = $1
<code>~</code> यह देखने के लिए जाँच करता है कि क्या उसका बायाँ संकार्य उसके दाएँ संकार्य से मेल खाता है; <code>!~</code> इसका उलटा है। ध्यान दें कि नियमित अभिव्यक्ति एक पैटर्न है और इसे चर में संग्रहीत किया जा सकता है।
खिसक जाना
awk '$0 ~ पैटर्न { Print FILENAME : $0 }' pattern=$pattern $@
</वाक्यविन्यास हाइलाइट>


या आप -v var=value कमांड लाइन विकल्प (जैसे awk -v pattern= $pattern ...) का उपयोग कर सकते हैं।
अगला तरीका आदेश पंक्ति चर कार्यभार का उपयोग करता है,जिसमें एडब्ल्यूके के तर्क को एक चर के कार्यभार के रूप में देखा जा सकता है
#!/bin/sh
pattern="$1"
shift
awk '$0 ~ pattern { print FILENAME ":" $0 }' "pattern=$pattern" "$@"
या आप -v var=value आदेश पंक्ति विकल्प (जैसे awk -v pattern= $pattern ...) का उपयोग कर सकते हैं।


अंत में, यह शुद्ध awk में लिखा गया है, बिना शेल की मदद के या awk स्क्रिप्ट के कार्यान्वयन के बारे में बहुत अधिक जानने की आवश्यकता के बिना (जैसा कि कमांड लाइन पर चर असाइनमेंट करता है), लेकिन थोड़ा लंबा है:
अंत में,यह शुद्ध एडब्ल्यूके में लिखा गया है,बिना सीप की मदद के या एडब्ल्यूके पटकथा के कार्यान्वयन के बारे में बहुत अधिक जानने की आवश्यकता के बिना (जैसा कि आदेश पंक्ति पर चर कार्य सौंपता है), लेकिन थोड़ा लंबा है:
<वाक्यविन्यास लैंग = awk>
<वाक्यविन्यास लैंग = awk>
शुरू करना {
  BEGIN {
    पैटर्न = एआरजीवी [1]
    pattern = ARGV[1]
    for (i = 1; i <ARGC; i++) # पहले तर्क को हटा दें
    for (i = 1; i < ARGC; i++) # remove first argument
        एआरजीवी [i] = एआरजीवी [i + 1]
        ARGV[i] = ARGV[i + 1]
    एआरजीसी--
    ARGC--
    अगर (एआरजीसी == 1) {# पैटर्न ही एकमात्र चीज थी, इसलिए मानक इनपुट से बल पढ़ें (पुस्तक द्वारा प्रयुक्त)
    if (ARGC == 1) { # the pattern was the only thing, so force read from standard input (used by book)
        एआरजीसी = 2
        ARGC = 2
        एआरजीवी [1] = -
        ARGV[1] = "-"
    }
    }
}
}
$0 ~ पैटर्न { Print FILENAME : $0 }
$0 ~ pattern { print FILENAME ":" $0 }
</वाक्यविन्यास हाइलाइट> <code>BEGIN</code> e> न केवल पहले तर्क को निकालने के लिए आवश्यक है, बल्कि इसे बाद में फ़ाइल नाम के रूप में व्याख्या किए जाने से रोकने के लिए भी आवश्यक है <code>BEGIN</code> ब्लॉक समाप्त होता है। <code>ARGC</code>, तर्कों की संख्या, हमेशा ≥1 होने की गारंटी है, जैसा कि <code>ARGV[0]</code> कमांड का नाम है जो स्क्रिप्ट को निष्पादित करता है, अक्सर स्ट्रिंग <code>"awk"</code>. यह भी ध्यान दें <code>ARGV[ARGC]</code> खाली स्ट्रिंग है, <code>""</code>. <code>#</code> एक टिप्पणी आरंभ करता है जो पंक्ति के अंत तक विस्तृत होती है।
</वाक्यविन्यास हाइलाइट> <code>BEGIN</code> e> न केवल पहले तर्क को निकालने के लिए आवश्यक है, बल्कि इसे बाद में फ़ाइल नाम के रूप में व्याख्या किए जाने से रोकने के लिए भी आवश्यक है <code>BEGIN</code> ब्लॉक समाप्त होता है। <code>ARGC</code>, तर्कों की संख्या, हमेशा ≥1 होने की गारंटी है, जैसा कि <code>ARGV[0]</code> आदेश का नाम है जो पटकथा को निष्पादित करता है,अक्सर तार <code>"awk"</code>. यह भी ध्यान दें <code>ARGV[ARGC]</code> खाली तार है, <code>""</code>. <code>#</code> एक टिप्पणी आरंभ करता है जो पंक्ति के अंत तक विस्तृत होती है।


ध्यान दें <code>if</code> खंड मैथा। awk केवल यह देखने के लिए जाँच करता है कि कमांड चलाने से पहले उसे मानक इनपुट से पढ़ना चाहिए या नहीं। इस का मतलब है कि
ध्यान दें <code>if</code> खंड था। एडब्ल्यूके केवल यह देखने के लिए जाँच करता है कि कमांड चलाने से पहले उसे मानक निविष्ट से पढ़ना चाहिए या नहीं। इस का मतलब है कि एडब्ल्यूके केवल इसलिए काम करता है क्योंकि यहाँ  कोई फ़ाइल नाम नहीं है,केवल पहले जांचा गया है <code>prog</code> चलाया गया है। कोई विवाद न हो इसलिए <code>ARGC</code> से 1 को स्पष्ट रूप से स्थिर करते है ,और जब एडब्ल्यूके को लगता है कि यहाँ कोई और निविष्ट फाइल नहीं है तब वो उसे छोड़ देगा। इसलिए,आपको विशेष फ़ाइल नाम के साथ मानक निविष्ट से पढ़ने के लिए स्पष्ट रूप से कहने की आवश्यकता है <code>-</code>.
अजीब 'ठेला'
Awk prog
केवल इसलिए काम करता है क्योंकि तथ्य यह है कि कोई फ़ाइल नाम नहीं है, केवल पहले चेक किया गया है <code>prog</code> चलाया जाता है! यदि आप स्पष्ट रूप से सेट करते हैं <code>ARGC</code> से 1 ताकि कोई तर्क न हो, अजीब बस छोड़ देगा क्योंकि ऐसा लगता है कि कोई और इनपुट फाइल नहीं है। इसलिए,आपको विशेष फ़ाइल नाम के साथ मानक इनपुट से पढ़ने के लिए स्पष्ट रूप से कहने की आवश्यकता है <code>-</code>.
== स्व-निहित एडब्ल्यूके पटकथा ==


== स्व-निहित AWK स्क्रिप्ट्स ==
यूनिक्स जैसे स्वयं निहित संचालक तंत्र  (यूनिक्स) सिंटैक्स का उपयोग करके एडब्ल्यूके पटकथा का निर्माण किया जा सकता है।
 
यूनिक्स जैसे ऑपरेटिंग सिस्टम पर शेबंग (यूनिक्स) सिंटैक्स का उपयोग करके स्व-निहित AWK स्क्रिप्ट का निर्माण किया जा सकता है।
 
उदाहरण के लिए, एक स्क्रिप्ट जो किसी फ़ाइल की सामग्री को प्रिंट करती है,नाम की फ़ाइल बनाकर बनाई जा सकती है <code>print.awk</code> निम्नलिखित सामग्री के साथ:
<वाक्यविन्यास लैंग = awk>
#!/usr/bin/awk -f
{प्रिंट $0}
</वाक्यविन्यास हाइलाइट>


उदाहरण के लिए,एक पटकथा जो किसी फ़ाइल की सामग्री को छापती है,नाम की फ़ाइल बनाकर बनाई जा सकती है <code>print.awk</code> निम्नलिखित सामग्री के साथ:
#!/usr/bin/awk -f
{ print $0 }
इसके साथ आह्वान किया जा सकता है: <code>./print.awk <filename></code>
इसके साथ आह्वान किया जा सकता है: <code>./print.awk <filename></code>


  <code>-f</code> e> एडब्ल्यूके को बताता है कि एडब्ल्यूके प्रोग्राम को पढ़ने के लिए जो तर्क दिया गया है,वह फ़ाइल है,जो कि वही ध्वज है जिसका उपयोग sed में किया जाता है। चूंकि वे अक्सर वन-लाइनर्स के लिए उपयोग किए जाते हैं,ये दोनों प्रोग्राम एक अलग फाइल के बजाय कमांड-लाइन तर्क के रूप में दिए गए प्रोग्राम को निष्पादित करने के लिए डिफ़ॉल्ट होते हैं।
  <code>-f</code> e> एडब्ल्यूके को बताता है कि एडब्ल्यूके प्रोग्राम को पढ़ने के लिए जो तर्क दिया गया है,वह फ़ाइल है,जो कि वही ध्वज है जिसका उपयोग sed में किया जाता है। चूंकि वे अक्सर एक पंक्तिय लिए उपयोग किए जाते हैं,ये दोनों प्रोग्राम एक अलग फाइल के बजाय आदेश पंक्ति तर्क के रूप में दिए गए प्रोग्राम को निष्पादित करने के लिए पूर्वनिर्धारित होते हैं।


== संस्करण और कार्यान्वयन ==
== संस्करण और कार्यान्वयन ==
Line 332: Line 248:
एडब्ल्यूके मूल रूप से 1977 में लिखा गया था और संस्करण 7 यूनिक्स के साथ वितरित किया गया था।
एडब्ल्यूके मूल रूप से 1977 में लिखा गया था और संस्करण 7 यूनिक्स के साथ वितरित किया गया था।


1985 में इसके लेखकों ने भाषा का विस्तार करना शुरू किया, सबसे महत्वपूर्ण रूप से उपयोगकर्ता परिभाषित कार्यों को जोड़कर। 1988 में प्रकाशित पुस्तक द एडब्ल्यूके प्रोग्रामिंग लैंग्वेज में भाषा का वर्णन किया गया है, और इसका कार्यान्वयन [[यूनिक्स प्रणाली वी]] के प्रदर्शन में उपलब्ध कराया गया था। असंगत पुराने संस्करण के साथ भ्रम से बचने के लिए, इस संस्करण को कभी-कभी नया एडब्ल्यूके या नॉक कहा जाता था। यह कार्यान्वयन 1996 में एक [[मुफ्त सॉफ्टवेयर लाइसेंस]] के तहत जारी किया गया था और अभी भी ब्रायन कर्निघन द्वारा बनाए रखा गया है ।{{citation needed}}
1985 में इसके लेखकों ने भाषा का विस्तार करना प्रारम्भ किया, सबसे महत्वपूर्ण रूप से उपयोगकर्ता परिभाषित कार्यों को जोड़कर। 1988 में प्रकाशित पुस्तक द एडब्ल्यूके प्रोग्रामिंग लैंग्वेज में भाषा का वर्णन किया गया है, और इसका कार्यान्वयन [[यूनिक्स प्रणाली वी]] के प्रदर्शन में उपलब्ध कराया गया था। असंगत पुराने संस्करण के साथ भ्रम से बचने के लिए, इस संस्करण को कभी-कभी नया एडब्ल्यूके या नॉक कहा जाता था। यह कार्यान्वयन 1996 में एक [[मुफ्त सॉफ्टवेयर लाइसेंस]] के तहत जारी किया गया था और अभी भी ब्रायन कर्निघन द्वारा बनाए रखा गया है ।


यूनिक्स के पुराने संस्करण,जैसे यूनिक्स/32वी,शामिल हैं <code>awkcc</code>,जिसने एडब्ल्यूके को C में बदल दिया। कर्निघन ने awk को C++ में बदलने के लिए एक प्रोग्राम लिखा; इसकी स्थिति ज्ञात नहीं है।<ref>{{cite conference |first=Brian W. |last=Kernighan |date=April 24–25, 1991 |url=https://www.cs.princeton.edu/~bwk/btl.mirror/awkc++.pdf |title=AWK से C++ अनुवादक|event=Usenix C++ Conference |location=Washington, DC |pages=217–228 |conference= |access-date=2020-02-01 |archive-date=2020-06-22 |archive-url=https://web.archive.org/web/20200622061725/https://www.cs.princeton.edu/~bwk/btl.mirror/awkc++.pdf |url-status=live }}</ref>
यूनिक्स के पुराने संस्करण,जैसे यूनिक्स/32वी,सम्मिलित हैं <code>awkcc</code>,जिसने एडब्ल्यूके को C में बदल दिया। कर्निघन ने एडब्ल्यूके को C++ में बदलने के लिए एक प्रोग्राम लिखा; इसकी स्थिति ज्ञात नहीं है।<ref>{{cite conference |first=Brian W. |last=Kernighan |date=April 24–25, 1991 |url=https://www.cs.princeton.edu/~bwk/btl.mirror/awkc++.pdf |title=AWK से C++ अनुवादक|event=Usenix C++ Conference |location=Washington, DC |pages=217–228 |conference= |access-date=2020-02-01 |archive-date=2020-06-22 |archive-url=https://web.archive.org/web/20200622061725/https://www.cs.princeton.edu/~bwk/btl.mirror/awkc++.pdf |url-status=live }}</ref>
* BWK awk, जिसे nawk के नाम से भी जाना जाता है, ब्रायन कर्निघन के संस्करण को संदर्भित करता है। मूल रूप से भाषा का वर्णन करने वाली पुस्तक के साथ इस शब्द के उपयोग के कारण इसे वन ट्रू एडब्ल्यूके करार दिया गया है और तथ्य यह है कि कर्निघन एडब्ल्यूके के मूल लेखकों में से एक थे।<ref name = "AWK1">{{cite book | title= AWK प्रोग्रामिंग लैंग्वेज|first1=Alfred V. |last1=Aho |first2=Brian W. |last2=Kernighan |first3=Peter J. |last3=Weinberger |  year= 1988 | publisher= Addison-Wesley Publishing Company | isbn= 9780201079814 |url = https://archive.org/details/pdfy-MgN0H1joIoDVoIC7 | access-date = 16 May 2015 }}</ref> FreeBSD इस संस्करण को one-true-awk के रूप में संदर्भित करता है।<ref>{{cite web |url=http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&content-type=text/x-cvsweb-markup |archive-url=https://web.archive.org/web/20130908180035/http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&content-type=text%2Fx-cvsweb-markup |archive-date=September 8, 2013 |title=AWK awk को FreeBSD कोर में आयात करने के लिए FreeBSD कार्य लॉग|date=May 16, 2005 |access-date=September 20, 2006 |url-status=live }}</ref> इस संस्करण में ऐसी विशेषताएं भी हैं जो पुस्तक में नहीं हैं, जैसे <code>tolower</code> तथा <code>ENVIRON</code> जिनकी व्याख्या ऊपर की गई है; विवरण के लिए स्रोत संग्रह में FIXES फ़ाइल देखें। इस संस्करण का उपयोग, उदाहरण के लिए, [[Android (ऑपरेटिंग सिस्टम)]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]], [[macOS]], और इलुमोस द्वारा किया जाता है। ब्रायन कर्निघन और अर्नोल्ड रॉबिंस, नॉक के लिए स्रोत रिपॉजिटरी में मुख्य योगदानकर्ता हैं: {{URL|https://github.com/onetrueawk/awk}}.
* बीडब्लूके एडब्ल्यूके, जिसे nawk के नाम से भी जाना जाता है,ब्रायन कर्निघन के संस्करण को संदर्भित करता है। मूल रूप से भाषा का वर्णन करने वाली पुस्तक के साथ इस शब्द के उपयोग के कारण इसे वन ट्रू एडब्ल्यूके करार दिया गया है और तथ्य यह है कि कर्निघन एडब्ल्यूके के मूल लेखकों में से एक थे।<ref name = "AWK1">{{cite book | title= AWK प्रोग्रामिंग लैंग्वेज|first1=Alfred V. |last1=Aho |first2=Brian W. |last2=Kernighan |first3=Peter J. |last3=Weinberger |  year= 1988 | publisher= Addison-Wesley Publishing Company | isbn= 9780201079814 |url = https://archive.org/details/pdfy-MgN0H1joIoDVoIC7 | access-date = 16 May 2015 }}</ref> FreeBSD इस संस्करण को वन ट्रू ओक के रूप में संदर्भित करता है।<ref>{{cite web |url=http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&content-type=text/x-cvsweb-markup |archive-url=https://web.archive.org/web/20130908180035/http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&content-type=text%2Fx-cvsweb-markup |archive-date=September 8, 2013 |title=AWK awk को FreeBSD कोर में आयात करने के लिए FreeBSD कार्य लॉग|date=May 16, 2005 |access-date=September 20, 2006 |url-status=live }}</ref> इस संस्करण में ऐसी विशेषताएं भी हैं जो पुस्तक में नहीं हैं, जैसे <code>tolower</code> तथा <code>ENVIRON</code> जिनकी व्याख्या ऊपर की गई है; विवरण के लिए स्रोत संग्रह में FIXES फ़ाइल देखें। इस संस्करण का उपयोग, उदाहरण के लिए, [[Android (ऑपरेटिंग सिस्टम)|एंड्रॉयड (ऑपरेटिंग सिस्टम)]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]], [[macOS]], और इलुमोस द्वारा किया जाता है। ब्रायन कर्निघन और अर्नोल्ड रॉबिंस, नॉक के लिए स्रोत रिपॉजिटरी में मुख्य योगदानकर्ता हैं: {{URL|https://github.com/onetrueawk/awk}}.
* gawk ([[GNU]] awk) एक और फ्री-सॉफ्टवेयर कार्यान्वयन है और एकमात्र कार्यान्वयन है जो [[अंतर्राष्ट्रीयकरण और स्थानीयकरण]] और TCP/IP नेटवर्किंग को लागू करने में गंभीर प्रगति करता है। यह मूल कार्यान्वयन के स्वतंत्र रूप से उपलब्ध होने से पहले लिखा गया था। इसमें अपना स्वयं का डिबगर शामिल है, और इसकी प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) उपयोगकर्ता को एक स्क्रिप्ट के लिए मापित प्रदर्शन संवर्द्धन करने में सक्षम बनाती है। यह उपयोगकर्ता को साझा पुस्तकालयों के साथ कार्यक्षमता बढ़ाने में भी सक्षम बनाता है। कुछ Linux वितरणों में उनके डिफ़ॉल्ट एडब्ल्यूके कार्यान्वयन के रूप में ''गौक'' शामिल है।{{Citation needed|date=September 2018}}
*
** गॉक-सीएसवी। [[अल्पविराम से अलग किये गए मान]] एक्सटेंशन ''गॉक'' इनपुट और आउटपुट सीएसवी स्वरूपित डेटा को संभालने की सुविधा प्रदान करता है।<ref>'''gawk-csv''' documentation at http://gawkextlib.sourceforge.net/csv/gawk-csv.html {{Webarchive|url=https://web.archive.org/web/20200325201153/http://gawkextlib.sourceforge.net/csv/gawk-csv.html |date=2020-03-25 }}</ref>
*
* mawk माइक ब्रेनन द्वारा [[बाईटकोड]] दुभाषिया पर आधारित एक बहुत तेज़ एडब्ल्यूके कार्यान्वयन है।
*
* libmawk mawk का एक फोर्क है, जो एप्लिकेशन को awk दुभाषियों के कई समानांतर उदाहरणों को एम्बेड करने की अनुमति देता है।
*
* awka (जिसका फ्रंट एंड ''mawk'' प्रोग्राम के ऊपर लिखा हुआ है) C कोड में एडब्ल्यूके स्क्रिप्ट्स का एक और ट्रांसलेटर है। जब संकलित किया जाता है, लेखक के libawka.a सहित सांख्यिकीय रूप [[से]], परिणामी निष्पादनयोग्य काफी तेज हो जाते हैं और लेखक के परीक्षणों के अनुसार, एडब्ल्यूके, पर्ल, या [[Tcl]] के अन्य संस्करणों के साथ बहुत अच्छी तरह से तुलना करते हैं। छोटी स्क्रिप्ट 160–170 kB के प्रोग्राम में बदल जाएँगी।
* ([[GNU]] एडब्ल्यूके) एक और फ्री-सॉफ्टवेयर कार्यान्वयन है और एकमात्र कार्यान्वयन है जो [[अंतर्राष्ट्रीयकरण और स्थानीयकरण]] और TCP/IP नेटवर्किंग को लागू करने में गंभीर प्रगति करता है। यह मूल कार्यान्वयन के स्वतंत्र रूप से उपलब्ध होने से पहले लिखा गया था। इसमें अपना स्वयं का डिबगर सम्मिलित है, और इसकी प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) उपयोगकर्ता को एक स्क्रिप्ट के लिए मापित प्रदर्शन संवर्द्धन करने में सक्षम बनाती है। यह उपयोगकर्ता को साझा पुस्तकालयों के साथ कार्यक्षमता बढ़ाने में भी सक्षम बनाता है। कुछ लिनक्स वितरणों में उनके पूर्वनिर्धारित एडब्ल्यूके कार्यान्वयन के रूप में ''गौक'' सम्मिलित है।
* tawk (थॉम्पसन AWK) Solaris (ऑपरेटिंग सिस्टम), DOS, OS/2, और [[Microsoft Windows]] के लिए एक AWK [[संकलक]] है, जो पहले थॉम्पसन ऑटोमेशन सॉफ्टवेयर द्वारा बेचा जाता था (जिसने अपनी गतिविधियाँ बंद कर दी हैं)।<ref>{{cite news |url=https://www.drdobbs.com/tools/examining-the-tawk-compiler/184410193 |work=[[Dr. Dobb's Journal]] |author=James K. Lawless |date=May 1, 1997 |title=TAWK कंपाइलर की जांच|access-date=February 21, 2020 |archive-date=February 21, 2020 |archive-url=https://web.archive.org/web/20200221191605/https://www.drdobbs.com/tools/examining-the-tawk-compiler/184410193 |url-status=live }}</ref>
** गॉक-सीएसवी। [[अल्पविराम से अलग किये गए मान]] विस्तार ''गॉक'' निविष्ट और उत्पादन सीएसवी स्वरूपित जानकारी  को संभालने की सुविधा प्रदान करता है।<ref>'''gawk-csv''' documentation at http://gawkextlib.sourceforge.net/csv/gawk-csv.html {{Webarchive|url=https://web.archive.org/web/20200325201153/http://gawkextlib.sourceforge.net/csv/gawk-csv.html |date=2020-03-25 }}</ref>
* Jawk Java (प्रोग्रामिंग लैंग्वेज) में AWK को लागू करने की एक परियोजना है, जिसे SourceForge पर होस्ट किया गया है।<ref>{{Cite web |url=http://sourceforge.net/projects/jawk/ |title=SourceForge पर ''जॉक''|access-date=2006-08-23 |archive-date=2007-05-27 |archive-url=https://web.archive.org/web/20070527021808/http://sourceforge.net/projects/jawk |url-status=live }}</ref> एडब्ल्यूके स्क्रिप्ट्स (यानी, जावा थ्रेड्स, सॉकेट्स, संग्रह, आदि) के भीतर जावा सुविधाओं तक पहुंच प्रदान करने के लिए भाषा में एक्सटेंशन जोड़े गए हैं।
* मॉक माइक ब्रेनन द्वारा [[बाईटकोड]] दुभाषिया पर आधारित एक बहुत तेज़ एडब्ल्यूके कार्यान्वयन है।
* xgawk '' gawk '' का एक कांटा है<ref>{{Cite web |url=http://gawkextlib.sourceforge.net/ |title=''xgawk'' होम पेज|access-date=2013-05-07 |archive-date=2013-04-18 |archive-url=https://web.archive.org/web/20130418224130/http://gawkextlib.sourceforge.net/ |url-status=live }}</ref> जो गतिशील रूप से लोड करने योग्य पुस्तकालयों के साथ गॉक का विस्तार करता है। XMLgawk एक्सटेंशन को आधिकारिक GNU Awk रिलीज़ 4.1.0 में एकीकृत किया गया था।
* libmawk mawk का एक फोर्क है, जो आवेदन को एडब्ल्यूके दुभाषियों के कई समानांतर उदाहरणों को अंतर्निहित करने की अनुमति देता है।
* 'QSEAWK' QSE लाइब्रेरी में शामिल एक एम्बेडेड AWK दुभाषिया कार्यान्वयन है जो C (प्रोग्रामिंग भाषा) और [[C++]] के लिए एम्बेडिंग [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (API) प्रदान करता है।<ref>{{Cite web |url=https://github.com/hyung-hwan/qse |title=GitHub पर QSEAWK|website=[[GitHub]] |access-date=2017-09-06 |archive-date=2018-06-11 |archive-url=https://web.archive.org/web/20180611001042/https://github.com/hyung-hwan/qse |url-status=live }}</ref>
* एडब्ल्यूकेa (जिसका फ्रंट एंड ''mawk'' प्रोग्राम के ऊपर लिखा हुआ है) C कोड में एडब्ल्यूके पटकथा का एक और अनुवादक है जो संकलित किया जाता है, लेखक के libawka.a सहित सांख्यिकीय रूप [[से]], परिणामी निष्पादनयोग्य काफी तेज हो जाते हैं और लेखक के परीक्षणों के अनुसार, एडब्ल्यूके,पर्ल, या [[Tcl]] के अन्य संस्करणों के साथ बहुत अच्छी तरह से तुलना करते हैं। छोटी पटकथा 160–170 kB के प्रोग्राम में बदल जाएँगी।
* libfawk सी में लिखा गया एक बहुत छोटा, केवल-फ़ंक्शन, रीएन्ट्रेंट, एम्बेड करने योग्य दुभाषिया है
* टॉक (थॉम्पसन एडब्ल्यूके) सोलारिस (प्रचालन तंत्र), DOS, OS/2, और माइक्रोसॉफ्ट विंडोज के लिए एक एडब्ल्यूके [[संकलक]] है, जो पहले थॉम्पसन ऑटोमेशन सॉफ्टवेयर द्वारा बेचा जाता था (जिसने अपनी गतिविधियाँ बंद कर दी हैं)।<ref>{{cite news |url=https://www.drdobbs.com/tools/examining-the-tawk-compiler/184410193 |work=[[Dr. Dobb's Journal]] |author=James K. Lawless |date=May 1, 1997 |title=TAWK कंपाइलर की जांच|access-date=February 21, 2020 |archive-date=February 21, 2020 |archive-url=https://web.archive.org/web/20200221191605/https://www.drdobbs.com/tools/examining-the-tawk-compiler/184410193 |url-status=live }}</ref>
* [[बिजीबॉक्स]] में दिमित्री ज़खारोव द्वारा लिखित एडब्ल्यूके कार्यान्वयन शामिल है। यह एम्बेडेड सिस्टम के लिए उपयुक्त एक बहुत छोटा कार्यान्वयन है।
* Jawk Java (प्रोग्रामिंग लैंग्वेज) में एडब्ल्यूके को लागू करने की एक परियोजना है, जिसे सोर्स फोर्ज  पर होस्ट किया गया है।<ref>{{Cite web |url=http://sourceforge.net/projects/jawk/ |title=SourceForge पर ''जॉक''|access-date=2006-08-23 |archive-date=2007-05-27 |archive-url=https://web.archive.org/web/20070527021808/http://sourceforge.net/projects/jawk |url-status=live }}</ref> एडब्ल्यूके पटकथा (यानी, जावा थ्रेड्स, सॉकेट्स, संग्रह, आदि) के भीतर जावा सुविधाओं तक पहुंच प्रदान करने के लिए भाषा में विस्तार जोड़े गए हैं।
* xगॉक '' गॉक '' का एक कांटा है<ref>{{Cite web |url=http://gawkextlib.sourceforge.net/ |title=''xgawk'' होम पेज|access-date=2013-05-07 |archive-date=2013-04-18 |archive-url=https://web.archive.org/web/20130418224130/http://gawkextlib.sourceforge.net/ |url-status=live }}</ref> जो गतिशील रूप से लोड करने योग्य पुस्तकालयों के साथ गॉक का विस्तार करता है। XMLगॉक विस्तार को आधिकारिक GNU एडब्ल्यूके रिलीज़ 4.1.0 में एकीकृत किया गया था।
* 'QSEAWK' QSE लाइब्रेरी में सम्मिलित एक एम्बेडेड एडब्ल्यूके दुभाषिया कार्यान्वयन है जो C (प्रोग्रामिंग भाषा) और [[C++]] के लिए एम्बेडिंग [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (API) प्रदान करता है।<ref>{{Cite web |url=https://github.com/hyung-hwan/qse |title=GitHub पर QSEAWK|website=[[GitHub]] |access-date=2017-09-06 |archive-date=2018-06-11 |archive-url=https://web.archive.org/web/20180611001042/https://github.com/hyung-hwan/qse |url-status=live }}</ref>
* libfawk सी में लिखा गया एक बहुत छोटा,केवल-फ़ंक्शन,रैत्रांत,व्यवस्था करने योग्य दुभाषिया है
* [[बिजीबॉक्स]] में दिमित्री ज़खारोव द्वारा लिखित एडब्ल्यूके कार्यान्वयन सम्मिलित है। यह अंतर्निहित व्यवस्था के लिए उपयुक्त एक बहुत छोटा कार्यान्वयन है।
* माइकल पार्कर द्वारा CLAWK एक ही लेखक की नियमित अभिव्यक्ति लाइब्रेरी के आधार पर [[सामान्य लिस्प]] में एडब्ल्यूके कार्यान्वयन प्रदान करता है।<ref>{{Cite web |url=https://github.com/sharplispers/clawk |title=गिटहब पर CLAWK|website=[[GitHub]] |access-date=2021-06-01 |archive-date=2021-08-25 |archive-url=https://web.archive.org/web/20210825102602/https://github.com/sharplispers/clawk |url-status=live }}</ref>
* माइकल पार्कर द्वारा CLAWK एक ही लेखक की नियमित अभिव्यक्ति लाइब्रेरी के आधार पर [[सामान्य लिस्प]] में एडब्ल्यूके कार्यान्वयन प्रदान करता है।<ref>{{Cite web |url=https://github.com/sharplispers/clawk |title=गिटहब पर CLAWK|website=[[GitHub]] |access-date=2021-06-01 |archive-date=2021-08-25 |archive-url=https://web.archive.org/web/20210825102602/https://github.com/sharplispers/clawk |url-status=live }}</ref>


== किताबें ==
== किताबें ==


* अहो, अल्फ्रेड वी .; कर्निघन, ब्रायन डब्ल्यू .; वेनबर्गर, पीटर जे। (1988-01-01)। AWK प्रोग्रामिंग लैंग्वेज । न्यूयॉर्क, एनवाई: एडिसन-वेस्ले । आईएसबीएन 0-201-07981-एक्स. 2017-01-22 को पुनःप्राप
* अहो, अल्फ्रेड वी .; कर्निघन, ब्रायन डब्ल्यू .; वेनबर्गर, पीटर जे। (1988-01-01)। एडब्ल्यूके प्रोग्रामिंग लैंग्वेज । न्यूयॉर्क, एनवाई: एडिसन-वेस्ले । आईएसबीएन 0-201-07981-एक्स. 2017-01-22 को पुनःप्राप
* रॉबिन्स, अर्नोल्ड (2001-05-15)। प्रभावी awk प्रोग्रामिंग (तीसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया । आईएसबीएन 0-596-00070-7. 2009-04-16 को पुनःप्राप्त ।
* रॉबिन्स, अर्नोल्ड (2001-05-15)। प्रभावी एडब्ल्यूके प्रोग्रामिंग (तीसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया । आईएसबीएन 0-596-00070-7. 2009-04-16 को पुनःप्राप्त ।
* डौघर्टी, डेल ; रॉबिन्स, अर्नोल्ड (1997-03-01)। सेड और ऑक (दूसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया। आईएसबीएन 1-56592-225-5. 2009-04-16 को पुनःप्राप्त ।
* डौघर्टी, डेल ; रॉबिन्स, अर्नोल्ड (1997-03-01)। सेड और ऑक (दूसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया। आईएसबीएन 1-56592-225-5. 2009-04-16 को पुनःप्राप्त ।
* रॉबिन्स, अर्नोल्ड (2000)। प्रभावी Awk प्रोग्रामिंग: Gnu Awk के लिए उपयोगकर्ता की मार्गदर्शिका (1.0.3 संस्करण)। ब्लूमिंगटन, आईएन: आईयूनिवर्स । आईएसबीएन 0-595-10034-1. 12 अप्रैल 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।
* रॉबिन्स, अर्नोल्ड (2000)। प्रभावी एडब्ल्यूके प्रोग्रामिंग: Gnu एडब्ल्यूके के लिए उपयोगकर्ता की मार्गदर्शिका (1.0.3 संस्करण)। ब्लूमिंगटन, आईएन: आईयूनिवर्स । आईएसबीएन 0-595-10034-1. 12 अप्रैल 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।
== यह भी देखें ==
== यह भी देखें ==


Line 362: Line 282:
* सेड
* सेड


== संदर्भ ==
== अग्रिम पठन ==
1- स्टुट्ज़, माइकल (19 सितम्बर 2006)। "GAWK के साथ आरंभ करें: AWK भाषा की मूलभूत बातें" (PDF) । डेवलपर वर्क्स । आईबीएम 2015-04-27 को मूल से संग्रहीत (पीडीएफ) 2015-01-29 को पुनःप्राप्त । [AWK is] को अक्सर डेटा-संचालित भाषा कहा जाता है - प्रोग्राम स्टेटमेंट प्रोग्राम चरणों के अनुक्रम के बजाय मिलान और प्रक्रिया के लिए इनपुट डेटा का वर्णन करता है
* एंडी ओरम (19 मई, 2021)। "ऑक: द पावर एंड प्रॉमिस ऑफ़ ए 40-ईयर-ओल्ड लैंग्वेज" । जीवाश्म । 9 जून, 2021 को पुनःप्राप्त ।
* हैमिल्टन, नाओमी (30 मई, 2008)। "प्रोग्रामिंग भाषाओं का AZ: एडब्ल्यूके" । कंप्यूटरवर्ल्ड । 2008-12-12 को पुनःप्राप्त । - एडब्ल्यूके पर अल्फ्रेड वी. अहो के साथ साक्षात्कार
* रॉबिंस, डेनियल (2000-12-01)। "एडब्ल्यूके by example, भाग 1: अजीब नाम के साथ महान भाषा का परिचय" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त ।
*रॉबिन्स, डैनियल (2001-01-01)। "एडब्ल्यूके by example, Part 2: Records, Loops, and arrays" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त
* रॉबिन्स, डैनियल (2001-04-01)। "एडब्ल्यूके by example, Part 3: String functions and ... checkbooks?" . सामान्य धागे । आईबीएम डेवलपर वर्क्स। 19 मई 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।
*एडब्ल्यूके - 60 मिनट में विशेषज्ञ बनें
* एडब्ल्यूके: पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज - शेल और यूटिलिटीज रेफरेंस, द सिंगल यूनिक्स स्पेसिफिकेशन , ओपन ग्रुप से वर्जन 4
*गॉक(1) -  लिनक्स यूजर मैनुअल - यूजर कमांड्स
== References ==


2- एंड्रियास जे. पिलावाकिस (1989)। यूनिक्स कार्यशाला । मैकमिलन अंतर्राष्ट्रीय उच्च शिक्षा। पी। 196.
{{Unix commands}}
{{Plan 9 commands}}


3- अर्नोल्ड रॉबिन्स (2015)। इफेक्टिव ऑक प्रोग्रामिंग: यूनिवर्सल टेक्स्ट प्रोसेसिंग एंड पैटर्न मैचिंग (चौथा संस्करण)। ओ'रेली मीडिया। पी। 560.
{{Authority control}}
 
4- जेम्स डब्ल्यू लिविंगस्टन (2 मई, 1988)। "द ग्रेट ऑक प्रोग्राम नो बर्डब्रेन" है। डिजिटल समीक्षा । पी। 91.
 
5- रेमंड, एरिक एस. "एप्लिंग मिनिलैंग्वेजेस" । यूनिक्स प्रोग्रामिंग की कला । केस स्टडी: awk. मूल से 30 जुलाई, 2008 को पुरालेखित । 11 मई 2010 को पुनःप्राप्त । अजीब क्रिया भाषा ट्यूरिंग-पूर्ण है, और फाइलों को पढ़ और लिख सकती है।


6- अहो, अल्फ्रेड वी .; कर्निघन, ब्रायन डब्ल्यू .; वेनबर्गर, पीटर जे। (1 सितंबर, 1978)। Awk - एक पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज (द्वितीय संस्करण) (तकनीकी रिपोर्ट)। यूनिक्स सातवां संस्करण मैनुअल, खंड 2. बेल टेलीफोन प्रयोगशालाएं, इंक । 1 फरवरी, 2020 को पुनःप्राप्त ।
{{DEFAULTSORT:Awk}}


7- अहो, अल्फ्रेड वी.; कर्निघन, ब्रायन डब्ल्यू.; वेनबर्गर, पीटर जे (1988)। AWK प्रोग्रामिंग लैंग्वेज । एडिसन-वेस्ली पब्लिशिंग कंपनी। आईएसबीएन 9780201079814. 16 मई 2015 को पुनःप्राप्त ।


8- "यूनिक्स स्पेशल: प्रोफेसर कर्निघन एंड ब्रिल्सफ़ोर्ड" । कंप्यूटरफाइल । सितम्बर 30, 2015. मूल से 2021-11-22 को पुरालेखित।


9- "एकल यूनिक्स विशिष्टता, संस्करण 3, यूटिलिटीज इंटरफेस टेबल" । 2018-01-05 को मूल से संग्रहीत । 2005-12-18 को पुनःप्राप्त ।


10- "अध्याय 15. आदेश और उपयोगिताएँ"। लिनक्स मानक आधार कोर विशिष्टता 4.0 (तकनीकी रिपोर्ट)। लिनक्स फाउंडेशन। 2008. मूल से 2019-10-16 को पुरालेखित । 2020-02-01 को पुनःप्राप्त ।


11- रॉबिन्स, अर्नोल्ड (मार्च 2014)। "जीएनयू परियोजना और मैं: जीएनयू एडब्ल्यूके के साथ 27 साल" (पीडीएफ) । skeeve.com । 6 अक्टूबर 2014 को मूल से संग्रहीत (पीडीएफ) । 4 अक्टूबर 2014 को पुनःप्राप्त ।


12- डौघर्टी, डेल; रॉबिन्स, अर्नोल्ड (1997)। सेड और ऑक (दूसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली। पी। 221. आईएसबीएन 1-565-92225-5.


13- हैमिल्टन, नाओमी (30 मई, 2008)। "प्रोग्रामिंग भाषाओं का AZ: AWK" । कंप्यूटरवर्ल्ड । मूल से 2020-02-01 को पुरालेखित । 2008-12-12 को पुनःप्राप्त ।


14- "रिकॉर्ड्स (जीएनयू ऑक यूजर गाइड)" । मूल से 2020-06-14 को पुरालेखित । 2020-05-23 को पुनःप्राप्त |


15- कर्निघन, ब्रायन डब्ल्यू. (24-25 अप्रैल, 1991)। AWK से C++ अनुवादक (पीडीएफ) । यूज़निक्स सी ++ सम्मेलन। वाशिंगटन डीसी। पीपी। 217-228। 2020-06-22 को मूल से संग्रहीत (पीडीएफ) । 2020-02-01 को पुनःप्राप्त ।


16-"BWK awk को FreeBSD के कोर में आयात करने के लिए FreeBSD का कार्य लॉग" । 16 मई, 2005। 8 सितंबर, 2013 को मूल से संग्रहीत । 20 सितंबर 2006 को पुनःप्राप्त ।


17-<nowiki>http://gawkextlib.sourceforge.net/csv/gawk-csv.html</nowiki> पर gawk-csv प्रलेखन वेबैक मशीन पर 2020-03-20 को


18- जेम्स के। लॉलेस (1 मई, 1997)। "टीएडब्ल्यूके कंपाइलर की जांच" । डॉ. डॉब्स जर्नल । मूल से 21 फरवरी, 2020 को पुरालेखित । 21 फरवरी, 2020 को पुनःप्राप्त ।


== अग्रिम पठन ==
* एंडी ओरम (19 मई, 2021)। "ऑक: द पावर एंड प्रॉमिस ऑफ़ ए 40-ईयर-ओल्ड लैंग्वेज" । जीवाश्म । 9 जून, 2021 को पुनःप्राप्त ।
* हैमिल्टन, नाओमी (30 मई, 2008)। "प्रोग्रामिंग भाषाओं का AZ: AWK" । कंप्यूटरवर्ल्ड । 2008-12-12 को पुनःप्राप्त । - AWK पर अल्फ्रेड वी. अहो के साथ साक्षात्कार
* रॉबिंस, डेनियल (2000-12-01)। "Awk by example, भाग 1: अजीब नाम के साथ महान भाषा का परिचय" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त ।
*रॉबिन्स, डैनियल (2001-01-01)। "Awk by example, Part 2: Records, Loops, and arrays" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त ।
* रॉबिन्स, डैनियल (2001-04-01)। "Awk by example, Part 3: String functions and ... checkbooks?" . सामान्य धागे । आईबीएम डेवलपर वर्क्स। 19 मई 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।
*AWK - 60 मिनट में विशेषज्ञ बनें
* awk: पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज - शेल और यूटिलिटीज रेफरेंस, द सिंगल यूनिक्स स्पेसिफिकेशन , ओपन ग्रुप से वर्जन 4
*gawk(1) -  लिनक्स यूजर मैनुअल - यूजर कमांड्स
== बाहरी संबंध ==


{{Wikibooks|An Awk Primer}}
* हेनरी स्पेंसर द्वारा द अमेजिंग ऑक असेंबलर ।
* कर्ली पर AWK
*awklang.org awk भाषा से संबंधित चीजों के लिए साइट


{{Unix commands}}
{{Plan 9 commands}}


{{Authority control}}
<references />


{{DEFAULTSORT:Awk}}[[Category:1977 सॉफ्टवेयर]]
== '''बाहरी संबंध''' ==
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category:मुफ्त संकलक और दुभाषिए]]
[[Category: पैटर्न मिलान प्रोग्रामिंग भाषाएं]]
[[Category: स्क्रिप्टिंग भाषाएं]]
[[Category: डोमेन-विशिष्ट प्रोग्रामिंग भाषाएं]]
[[Category:मानक यूनिक्स कार्यक्रम]]
[[Category: पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category: यूनिक्स SUS2008 उपयोगिताओं]]
[[Category: यूनिक्स टेक्स्ट प्रोसेसिंग यूटिलिटीज]]
[[Category:योजना 9 आदेश]]
[[Category: 1977 में बनाई गई प्रोग्रामिंग भाषा]]


* [https://web.archive.org/web/20120207095326/http://doc.cat-v.org/henry_spencer/amazing_awk_assembler/ The Amazing Awk Assembler] by [[:en:Henry_Spencer|Henry Spencer.]]
* [https://curlie.org/Computers/Programming/Languages/Awk AWK] at [[:en:DMOZ|Curlie]]
* [http://awklang.org/ awklang.org] The site for things related to the awk language


[[Category: Machine Translated Page]]
[[Category:1977 में बनाई गई प्रोग्रामिंग भाषा|Awk]]
[[Category:Created On 30/11/2022]]
[[Category:1977 सॉफ्टवेयर|Awk]]
[[Category:CS1 français-language sources (fr)|Awk]]
[[Category:CS1 maint|Awk]]
[[Category:CS1 Ελληνικά-language sources (el)|Awk]]
[[Category:Citation Style 1 templates|W]]
[[Category:Collapse templates|Awk]]
[[Category:Created On 30/11/2022|Awk]]
[[Category:Machine Translated Page|Awk]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Awk]]
[[Category:Pages with script errors|Awk]]
[[Category:Sidebars with styles needing conversion|Awk]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates based on the Citation/CS1 Lua module|Awk]]
[[Category:Templates generating COinS|Cite web]]
[[Category:Templates generating microformats|Awk]]
[[Category:Templates that are not mobile friendly|Awk]]
[[Category:Templates used by AutoWikiBrowser|Cite web]]
[[Category:Templates using TemplateData|Awk]]
[[Category:Webarchive template wayback links|Awk]]
[[Category:Wikipedia fully protected templates|Cite web]]
[[Category:Wikipedia metatemplates|Awk]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर|Awk]]
[[Category:डोमेन-विशिष्ट प्रोग्रामिंग भाषाएं|Awk]]
[[Category:पाठ-उन्मुख प्रोग्रामिंग भाषाएं|Awk]]
[[Category:पैटर्न मिलान प्रोग्रामिंग भाषाएं|Awk]]
[[Category:मानक यूनिक्स कार्यक्रम|Awk]]
[[Category:मुफ्त संकलक और दुभाषिए|Awk]]
[[Category:यूनिक्स SUS2008 उपयोगिताओं|Awk]]
[[Category:यूनिक्स टेक्स्ट प्रोसेसिंग यूटिलिटीज|Awk]]
[[Category:योजना 9 आदेश|Awk]]
[[Category:स्क्रिप्टिंग भाषाएं|Awk]]

Latest revision as of 13:59, 16 January 2023

यह लेख प्रोग्रामिंग भाषा के बारे में है। अन्य उपयोगों के लिए,एडब्ल्यूके (बहुविकल्पी) देखें ।

एडब्ल्यूके (awk)[1]एक डोमेन-विशिष्ट भाषा है जिसे पाठ प्रसंस्करण के लिए रचित किया गया है और सामान्यतः जानकारी निष्कर्षण और लेखन उपकरण के रूप में उपयोग किया जाता है। सेड और ग्रेप की तरह,यह एक फिल्टर (सॉफ्टवेयर) है,[1] और अधिकांश यूनिक्स जैसे प्रचालन तंत्र की एक मानक विशेषता है।

एडब्ल्यूके भाषा एक जानकारी संचालन पटकथा(स्क्रिप्टिंग) भाषा है जिसमें पाठ्य जानकारी की पैटर्न के विपरीत की जाने वाली क्रियाओं का एक समूह होता है जिसमें विषय वस्तु निकालने या बदलने के उद्देश्य से या तो सीधे फाइलों पर कार्य करता है या एक पाइपलाइन के हिस्से के रूप में उपयोग किया जाता है- जैसे स्वरूपित विवरण तैयार करना। ये भाषा बड़े पैमाने पर स्ट्रिंग डेटा टाइप,सहयोगी सरणी,और नियमित अभिव्यक्तियों का उपयोग करती है। जबकि एडब्ल्यूके का एक सीमित प्रयोजन कार्यक्षेत्र (सॉफ्टवेयर इंजीनियरिंग) है और इसे विशेष रूप से एक-पंक्तिय कार्यक्रमो का समर्थन करने के लिए रचित किया गया था,भाषा ट्यूरिंग-पूर्ण है,और यहां तक ​​कि एडब्ल्यूके के प्रारंभिक बेल लैब्स उपयोगकर्ता अक्सर अच्छी तरह से संरचित बड़े एडब्ल्यूके प्रोग्राम लिखते थे।[2]

एडब्ल्यूके को 1970 के दशक में बेल लैब्स में बनाया गया था,[3] और इसका नाम इसके लेखकों के उपनामों से लिया गया है: मैं अल्फ्रेड हूं, पीटर जे वेनबर्गर और ब्रायन कर्निघन। परिवर्णी शब्द का उच्चारण पक्षी औक (auk) के नाम के समान ही किया जाता है, जो एडब्ल्यूके प्रोग्रामिंग भाषा के कवर पर है।[4] जब सभी छोटे अक्षरों में लिखा जाता है,जैसे awk,यह बेल लैब्स प्रोग्राम के यूनिक्स या परियोजना 9 को संदर्भित करता है जो एडब्ल्यूके प्रोग्रामिंग भाषा में लिखी गई पटकथा को चलाता है।

इतिहास

एडब्ल्यूके को प्रारम्भ में 1977 में अल्फ्रेड अहो(A),पीटर जे. वेनबर्गर(W),और ब्रायन कर्निघन(K)द्वारा विकसित किया गया था। एडब्ल्यूके नाम इसके लेखकों के उपनाम के पहले अक्षर से लिया गया है। कर्निघन के अनुसार,एडब्ल्यूके के लक्ष्यों में से एक ऐसा उपकरण होना था जो आसानी से संख्याओं और पैटर्न दोनों में कुशलता से काम कर सके। एडब्ल्यूके मार्क रोचकिंड की प्रोग्रामिंग भाषा से भी प्रेरित था जिसका उपयोग निविष्ट(इनपुट) जानकारी में प्रतिरूप खोजने के लिए किया गया था,और इसे yacc का उपयोग करके लागू किया गया था।[5]

संस्करण 7 यूनिक्स में प्रकट होने वाले शुरुआती उपकरणों में से एक के रूप में,एडब्ल्यूके ने बॉर्न शेल के अलावा एक यूनिक्स पाइपलाइन में गणितीय सुविधाएँ जोड़ीं, जो मानक यूनिक्स वातावरण में उपलब्ध एकमात्र पटकथा भाषा है। यह एकल यूनिक्स विशिष्टता की अनिवार्य उपयोगिताओं में से एक है,[6] और लिनक्स मानक आधार विनिर्देश द्वारा आवश्यक है।[7]एडब्ल्यूके को 1985-88 में महत्वपूर्ण रूप से संशोधित और विस्तारित किया गया था,जिसके परिणामस्वरूप 1988 में जारी पॉल रूबिन जे फेनलसन और रिचर्ड स्टालमैन द्वारा लिखित गॉक(GNU पैकेज) कार्यान्वयन हुआ।[8]जीएनयू एडब्ल्यूके सबसे व्यापक रूप से तैनात संस्करण हो सकता है[9] क्योंकि यह जीएनयू-आधारित लिनक्स पैकेज में सम्मिलित है। 1994 से केवल अर्नोल्ड रॉबिंस ने जीएनयू एडब्ल्यूके को बनाए रखा गया है।[8] ब्रायन कर्निघन का नॉक (न्यू एडब्ल्यूके) स्रोत पहली बार 1993 में अप्रकाशित और 1990 के दशक के अंत से सार्वजनिक रूप से जारी किया गया था; कई बीएसडी व्यवस्था जीपीएल अनुज्ञा पत्र से बचने के लिए इसका इस्तेमाल करते हैं।[8]

एडब्ल्यूके सेड(1974) से पहले था। दोनों को पाठ प्रसंस्करण के लिए रचित किया गया था। वे पंक्ति-उन्मुख,जानकारी-संचालित प्रतिमान साझा करते हैं,और अंतर्निहित मुख्य लूप और मौजूदा पंक्ति चर के अंतर्निहित एक-पंक्तिय प्रोग्राम लिखने के लिए विशेष रूप से उपयुक्त हैं। प्रारंभिक एडब्ल्यूके कार्यक्रमों की शक्ति और कठोरता और साथ में उस समय एडब्ल्यूके की सीमाएं- विशेष रूप से शक्तिशाली नियमित अभिव्यक्ति से निपटने और निहित चर के कारण संक्षिप्तता,जो एक-पंक्तिय सुविधा प्रदान करते हैं - पर्ल भाषा (1987) के लिए महत्वपूर्ण प्रेरणा थीं। 1990 के दशक में,पर्ल बहुत लोकप्रिय हो गया था,यूनिक्स पाठ-प्रसंस्करण भाषाओं के सन्दर्भ में एडब्ल्यूके साथ प्रतिस्पर्धा कर रहा था।

एडब्ल्यूके कार्यक्रमों की संरचना

एडब्ल्यूके निविष्ट को एक बार में एक पंक्ति में पढ़ता है। कार्यक्रम में प्रत्येक प्रतिरूप के लिए एक पंक्ति जांची जाती है,और प्रत्येक प्रतिरूप के लिए मिलान किया जाता है, और संबंधित क्रिया निष्पादित की जाती है।

-  - 

एडब्ल्यूके प्रोग्राम प्रतिरूप गतिविधि जोड़े का एक पैटर्न है,जिसे इस प्रकार लिखा गया है:

condition { action }
condition { action }
...

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

एक साधारण एडब्ल्यूके अभिव्यक्ति के अलावा,जैसे foo == 1 या /^foo/स्थिति हो सकती है BEGIN या END सभी अभिलेख पढ़ने से पहले या बाद में कार्रवाई को निष्पादित करने का कारण बनता है,या पैटर्न1,पैटर्न2 जो एक अभिलेख से प्रारम्भ होने वाले अभिलेख की श्रेणी से मेल खाता है जो पैटर्न1 से मेल खाता है और उस अभिलेख को सम्मिलित करता है जो पैटर्न 2 से मेल खाता है और बाद की पंक्तियों को पैटर्न1 के विपरीत फिर से मिलान करने का प्रयास करता है।

सामान्य अंकगणितीय और तार्किक संचालकों के अलावा,एडब्ल्यूके अभिव्यक्ति में टिल्ड संचालक सम्मिलित है, ~, जो एक पैटर्न के विपरीत एक नियमित अभिव्यक्ति से मेल खाता है। सुविधाजनक सिंटैक्टिक चीनी के रूप में, /regexp/ टिल्ड संचालक का उपयोग किए बिना मौजूदा रिकॉर्ड के विपरीत मेल खाता है; यह सिंटैक्स sed से निकला है,जो बदले में इसे एड (टेक्स्ट एडिटर) संपादक से विरासत में मिला है, जहाँ / खोजने के लिए प्रयोग किया जाता है। नियमित अभिव्यक्ति के लिए सीमांकक के रूप में स्लैश का उपयोग करने का यह सिंटैक्स बाद में पर्ल और ईसीएमए पटकथा द्वारा अपनाया गया था,और अब जन साधारण है। पर्ल द्वारा टिल्ड संचालक को भी अपनाया गया था।

आदेश

एडब्ल्यूके कमांड वे कथन हैं जो उपरोक्त उदाहरणों में कार्रवाई के लिए प्रतिस्थापित किए गए हैं। एडब्ल्यूके आदेश में कार्य आह्वान (फंक्शन कॉल),चर कार्यभार,गणना,या कोई संयोजन सम्मिलित हो सकता है। एडब्ल्यूके में कई कार्यों के लिए अंतर्निहित समर्थन सम्मिलित है;एडब्ल्यूके के विभिन्न प्रतिभा द्वारा और भी बहुत कुछ प्रदान किया जाता है। साथ ही,कुछ प्रतिभा गतिशील रूप से जोड़ी गई लाइब्रेरी को सम्मिलित करने का समर्थन करते हैं,जो अधिक कार्य भी प्रदान कर सकता है।

प्रिंट आदेश

प्रिंट आदेश का उपयोग लिखित सामग्री को उत्पादन करने के लिए किया जाता है। उत्पादित लिखित सामग्री हमेशा एक पूर्वनिर्धारित पैटर्न के साथ समाप्त होता है जिसे पैटर्न अभिलेख विभाजक (ओआरएस) कहा जाता है जिसका पूर्वनिर्धारित मान एक नई पंक्ति है। इस आदेश का सबसे सरल रूप है:

print
यह मौजूदा अभिलेख की सामग्री प्रदर्शित करता है। एडब्ल्यूके में,अभिलेख को क्षेत्रों में तोड़ा जाता है,और इन्हें अलग से प्रदर्शित किया जा सकता है:
print $1
मौजूदा अभिलेख का पहला क्षेत्र प्रदर्शित करता है
print $1, $3
मौजूदा अभिलेख के पहले और तीसरे क्षेत्र को प्रदर्शित करता है,जिसे एक पूर्वनिर्धारित पैटर्न द्वारा अलग किया जाता है और जिसे उत्पादन क्षेत्र विभाजक (OFS) कहा जाता है,जिसका पूर्वनिर्धारित मान एक अन्तर वर्ण है।

हालांकि ये क्षेत्र ($X) चर के समान हो सकते हैं ($ प्रतीक पर्ल में चर को इंगित करता है),वे वास्तव में मौजूदा अभिलेख के क्षेत्र को संदर्भित करते हैं। एक विशेष अवस्था मे, $0, पूरे अभिलेख को संदर्भित करता है। वास्तव में, आदेशprintतथाprint $0कार्यक्षमता में समान हैं।

प्रिंट आदेश गणना और/या कार्य आह्वान के परिणाम भी प्रदर्शित कर सकता है:

/regex_pattern/ {
    # Actions to perform in the event the record (line) matches the above regex_pattern
    print 3+2
    print foobar(3)
    print foobar(variable)
    print sin(3-2)
}

निविष्ट फाइल मे भेजा जा सकता है:

  /regex_pattern/ {
    # Actions to perform in the event the record (line) matches the above regex_pattern
    print "expression" > "file name"
}

या पाइप के माध्यम से

  /regex_pattern/ {
    # Actions to perform in the event the record (line) matches the above regex_pattern
    print "expression" | "command"
}

अंतर्निहित चर

एडब्ल्यूके के अंतर्निहित चर में क्षेत्र चर सम्मिलित हैं: $1, $2, $3, और इसी तरह ($0 पूरे अभिलेख का प्रतिनिधित्व करता है)। वे अभिलेख में अलग-अलग लिखित सामग्री क्षेत्र में लिखित सामग्री या मान रखते हैं।

अन्य चर में सम्मिलित हैं:

  • NR: अभिलेखों की संख्या। सभी जानकारी फ़ाइलों से अब तक पढ़े गए निविष्ट अभिलेख की संख्या की मौजूदा गणना रखता है। यह शून्य से प्रारम्भ होता है,लेकिन कभी भी स्वचालित रूप से शून्य पर फिर से स्थापित नहीं होता है।[10]
  • FNR: अभिलेख की फ़ाइल संख्या। मौजूदा फ़ाइल में अब तक पढ़े गए निविष्ट अभिलेख की संख्या की तत्काल गणना रखता है। हर बार जब कोई नई फ़ाइल प्रारम्भ होती है तो यह चर स्वचालित रूप से शून्य पर फिर से स्थापित हो जाता है।[10]
  • NF: क्षेत्रों की संख्या। मौजूदा निविष्ट अभिलेख में क्षेत्र की संख्या सम्मिलित है।निविष्ट अभिलेख में अंतिम क्षेत्र को $NF, दूसरे से अंतिम क्षेत्र को $(NF-1),तीसरे से अंतिम क्षेत्र को $(NF-2), आदि द्वारा निर्दिष्ट किया जा सकता है।
  • FILENAME: मौजूदा निविष्ट-फ़ाइल का नाम समाहित करता है।
  • FS: क्षेत्र विभाजक। निविष्ट अभिलेखमें क्षेत्र को विभाजित करने के लिए उपयोग किए जाने वाले क्षेत्र विभाजक सम्मिलित हैं। पूर्वस्थापित,श्वेत स्थान और टैब वर्णों के किसी भी क्रम की अनुमति देता है। क्षेत्र विभाजक को बदलने के लिए FS को किसी अन्य वर्ण या वर्ण अनुक्रम के साथ पुन: सौंपा जा सकता है।
  • RS:अभिलेख विभाजक। मौजूदा अभिलेख विभाजक चरित्र को संग्रहीत करता है। चूंकि, पूर्वस्थापित रूप से,एक निविष्ट पंक्ति निविष्ट अभिलेख है,क्षेत्र अभिलेख पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
  • OFS:उत्पादन क्षेत्र विभाजक। उत्पादन क्षेत्र विभाजक को संग्रहीत करता है,जो क्षेत्र को तब अलग करता है जब एडब्ल्यूके उन्हें छापता है। एक स्थान वर्ण पूर्वस्थापित है।
  • ORS: उत्पादन अभिलेख विभाजक। उत्पादन अभिलेख विभाजक को संग्रहीत करता है,जो उत्पादन अभिलेख को तब अलग करता है जब एडब्ल्यूके उन्हें छापता है। पूर्वस्थापित वर्ण एक 'नई पंक्ति' है।
  • OFMT: उत्पादन स्वरूप। संख्यात्मक उत्पादन के लिए प्रारूप को संगृहीत करता है। पूर्वस्थापित प्रारूप %.6g है।

चर और वाक्य रचना

चर नाम किसी भी अक्षर [A-Za-z0-9_] का उपयोग कर सकते हैं, भाषा सूचक शब्द के अपवाद के साथ। संचालको + - * / क्रमशः जोड़, घटाव,गुणा और भाग का प्रतिनिधित्व करते हैं। पैटर्न संघनन के लिए,बस दो चर एक दूसरे के नज़दीक में रखें। यदि पैटर्न स्थिरांक सम्मिलित हैं, बीच में एक स्थान का उपयोग करना वैकल्पिक है,लेकिन एक दूसरे से सटे हुए दो चर नामों के बीच में एक स्थान की आवश्यकता होती है। दोहरे उद्धरण पैटर्न स्थिरांक का सीमांकन करते हैं। व्याख्यान को अर्धविरामों के साथ समाप्त करने की आवश्यकता नहीं है। अंत में,एक पंक्ति पर पहले वर्ण के रूप में # का उपयोग करके कार्यक्रमों में टिप्पणियां जोड़ी जा सकती हैं।

उपयोगकर्ता परिभाषित कार्य

सी (प्रोग्रामिंग भाषा) के समान प्रारूप में, फ़ंक्शन परिभाषाओं में कीवर्ड सम्मिलित होता है function, कार्य नाम,तर्क नाम और यहाँ एक फ़ंक्शन का उदाहरण दिया गया है।

function add_three (number) {
    return number + 3
}
This

इस कथन को निम्नानुसार लागू किया जा सकता है:

(pattern) {
   print add_three(36)     # Outputs '''39'''
}

फ़ंक्शंस में चर हो सकते हैं जो स्थानीय दायरे में हैं। इनके नाम तर्क सूची के अंत में जोड़े जाते हैं,हालांकि फ़ंक्शन को आव्हान करते समय इनके लिए मान छोड़े जाने चाहिए। स्थानीय चर से पहले तर्क सूची में कुछ श्वेत स्थान चरित्र जोड़ने के लिए यह अतिआवश्यक है,यह इंगित करने के लिए कि मापदंड कहां समाप्त होते हैं और स्थानीय चर प्रारम्भ होते हैं।

उदाहरण

हेलो वर्ल्ड

यहाँ प्रथागत हैलो,वर्ल्ड है! प्रोग्राम नमस्ते दुनिया कार्यक्रम एडब्ल्यूके में लिखा गया है:

    BEGIN {
        print "Hello, world!"
        exit
}

=== 80 वर्णों से अधिक लंबी लाइनें === प्रिंट करें

80 वर्णों से अधिक लंबी सभी पंक्तियों को प्रिंट करें। ध्यान दें कि पूर्वस्थापित क्रिया मौजूदा पंक्ति को छापता है।

length($0) > 80

शब्द गणना

निविष्ट में शब्दों की गणना करें और पंक्तियों,शब्दों और वर्णों की संख्या छापे (जैसे wc (यूनिक्स)): <वाक्यविन्यास लैंग = awk> {

 {
    words += NF
    chars += length + 1 # add one to account for the newline character at the end of each record (line)
}
END { print NR, words, chars }

चूंकि कार्यक्रम की पहली पंक्ति के लिए कोई पैटर्न नहीं है,निविष्ट की प्रत्येक पंक्ति पूर्वानिर्धारित रूप से मेल खाती है,इसलिए प्रत्येक पंक्ति के लिए वृद्धि क्रियाएं निष्पादित की जाती हैं। ध्यान दें कि words += NF के लिए आशुलिपि है words = words + NF.

अंतिम शब्द का योग

{ s += $NF }
END { print s + 0 }

s को $NF के सांख्यिक मान से बढ़ाया जाता है,जो एडब्ल्यूके के क्षेत्र विभाजक (पूर्वनिर्धारित रूप से,श्वेत् स्थान) द्वारा परिभाषित रेखा पर अंतिम शब्द है। एनएफ मौजूदा पंक्ति में क्षेत्र की संख्या है,उदाहरण 4. चूँकि $4 चौथे क्षेत्र का मान है, $NF पंक्ति में अंतिम क्षेत्र का मान है,इस बात की परवाह किए बिना कि इस रेखा में कितने क्षेत्र हैं,या इसमें आस-पास की रेखाओं की तुलना में अधिक या कम क्षेत्र हैं। $ वास्तव में उच्चतम संचालक प्राथमिकता वाला एक एकल संचालक है। (यदि पंक्ति में कोई क्षेत्र नहीं है, तो NF 0 है, $0 पूरी पंक्ति है, जो इस मामले में संभावित सफेद स्थान के अलावा खाली है, और इसलिए इसका संख्यात्मक मान 0 है।)

निविष्ट के अंत में END पैटर्न मेल खाता है,इसलिए s छापा जाता है। हालाँकि,एम निविष्ट की कोई पंक्ति नहीं हो सकती है,जिस स्थिति में कभी भी कोई मान निर्दिष्ट नहीं किया गया है,यह पूर्वनिर्धारित रूप से एक खाली स्ट्रिंग होगा। एक चर में शून्य जोड़ना एक एडब्ल्यूके वाक्यपद्दती है जो इसे एक पैटर्न से संख्यात्मक मान तक ले जाने के लिए बाध्य करता है। बाध्यता के साथ प्रोग्राम एक खाली निविष्ट है पर 0 छापता है, इसके बिना,एक खाली पंक्ति छपी है।

निविष्ट पंक्तियों की एक पैटर्न का मिलान करें

NR % 4 == 1, N % 4 == 3 { printf "%6d  %s\n", NR, $0 }

कार्य विवरण प्रत्येक पंक्ति क्रमांकित छापता है। Printf फ़ंक्शन मानक C Printf का अनुकरण करता है और ऊपर वर्णित छापने के आदेश के समान कार्य करता है। हालांकि,मिलान करने के लिए पैटर्न में निम्नानुसार काम करता है: एनआर अभिलेखों की संख्या है,सामान्य तौर पर निविष्ट की पंक्तियां,यानी निविष्ट की पहली पंक्ति के लिए 1 से प्रारम्भ होने वाली मौजूदा पंक्ति संख्या % मापांक संचालक है। एनआर% 4 == 1 पहली, 5वीं, 9वीं, आदि, निविष्ट की पंक्तियों के लिए सत्य है। इसी प्रकार, एनआर% 4 == 3 निविष्ट की तीसरी, 7वीं, 11वीं, आदि के लिए सही है। क्रम पैटर्न तब तक मान्य नहीं है जब तक कि पहला भाग पंक्ति 1 पर मेल नहीं खाता है,और तब तक सही रहता है और जब दूसरा भाग मेल खाता है, तब तक पंक्ति 3 पर होता है। यह तब तक अमान्य रहता है जब तक कि पहला भाग पंक्ति 5 पर फिर से मेल नहीं खाता।

इस प्रकार,प्रोग्राम 1,2,3 पंक्तियों को छापता है,रेखा 4 को छोड़ देता है,और फिर 5,6,7, और इसी तरह प्रत्येक पंक्ति के लिए,यह पंक्ति संख्या (6 वर्ण-चौड़े क्षेत्र पर) और फिर पंक्ति सामग्री को छापता है। उदाहरण के लिए,जब इस निविष्ट पर निष्पादित किया जाता है:

Rome
Florence
Milan
Naples
Turin
Venice

पिछला कार्यक्रम छापता है:

     1 Rome
     2 Florence
     3 Milan
     5 Turin
     6 Venice

फ़ाइल के प्रारंभिक या अंतिम भाग को छापना

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

<वाक्यविन्यास लैंग = awk>

 /^--cut here--$/, 0

</वाक्यविन्यास हाइलाइट> रेगुलर एक्सप्रेशन ^--कट हियर--$ से मेल खाने वाली पहली पंक्ति से निविष्ट की पंक्ति प्रिंट करता है,यानी एक पंक्ति जिसमें केवल वाक्यांश --यहाँ से काटो -- होता है,अंत तक।

शब्द आवृत्तियों की गणना करें

साहचर्य सरणियों का उपयोग करते हुए शब्द आवृत्ति: <वाक्यविन्यास लैंग = awk> प्रारम्भ करना {

 BEGIN {
    FS="[^a-zA-Z]+"
}
{
    for (i=1; i<=NF; i++)
        words[tolower($i)]++
}
END {
    for (i in words)
        print i, words[i]
}

BEGIN ब्लॉक क्षेत्र विभाजक को बिना अंग्रेजी वर्णमाला के किसी भी क्रम में समाहित करता है। ध्यान दें कि विभाजक नियमित अभिव्यक्ति हो सकते हैं। उसके बाद,हम एक अंतिम क्रिया पर जाते हैं,जो प्रत्येक निविष्ट पंक्ति पर क्रिया करता है। इस मामले में,पंक्ति पर प्रत्येक क्षेत्र के लिए, हम उस शब्द की संख्या में एक जोड़ देते हैं,जो पहले निचले स्तर में बदला गया शब्द प्रकट होता है। अंत में,END ब्लॉक में,हम शब्दों को उनकी आवृत्तियों के साथ छापते हैं। पंक्ति के लिए शब्दों में एक गांठ बनाता है जो सरणी शब्दों के माध्यम से जाता है i को सरणी के प्रत्येक उपपटकथा पर स्थित करता है। यह अधिकांश भाषाओं से अलग है,जहां ऐसा लूप सरणी में प्रत्येक मान से होकर जाता है। लूप इस प्रकार प्रत्येक शब्द को उसकी आवृत्ति गणना के बाद छापता है। टोलॉवेर पुस्तक प्रकाशित होने के बाद किए गए वन ट्रू ऑक में एक अतिरिक्त था।

for (i in words)

इस कार्यक्रम को कई तरह से दर्शाया जा सकता है। पहले वाला सीप पटकथा बनाने के लिए छोटे सीप का उपयोग करता है जो सब कुछ करता है। यह इन विधियों में सबसे छोटा है:

#!/bin/sh

pattern="$1"
shift
awk '/'"$pattern"'/ { print FILENAME ":" $0 }' "$@"

पैटर्न = $1 शिफ्ट awk '/' $pattern '/ { Print FILENAME : $0 }' $@ </वाक्यविन्यास हाइलाइट> $pattern e> एडब्ल्यूके आदेश में एकल कोट्स द्वारा संरक्षित नहीं है ताकि सीप चर का विस्तार करे लेकिन रिक्त स्थान वाले पैटर्न को ठीक से संभालने के लिए इसे दोहरे कोट्स में डालने की आवश्यकता है। सामान्य तरीके से एक पैटर्न यह देखने के लिए जांच करता है कि क्या पूरी पंक्ति ($0) मेल खाती है और मौजूदा फाइल का नाम सम्मिलित है। एडब्ल्यूके का कोई स्पष्ट संयोजन संचालिका नहीं है; दो निकटवर्ती तार उन्हें जोड़ते हैं। $0मूल अपरिवर्तित निविष्ट पंक्ति तक फैलता है।

इसे लिखने के वैकल्पिक तरीके हैं। यह सीप पटकथा पर्यावरण को सीधे एडब्ल्यूके के भीतर से प्रवेश करती है:

#!/bin/sh

export pattern="$1"
shift
awk '$0 ~ ENVIRON["pattern"] { print FILENAME ":" $0 }' "$@"

यह एक सीप पटकथा है जो उपयोग करती है ENVIRON,पुस्तक प्रकाशित होने के बाद वन ट्रू ओक के एक नए संस्करण में प्रस्तुत की गई एक सरणी का पटकथाENVIRON एक पर्यावरण चर का नाम है; इसका परिणाम चर का मान है। यह विभिन्न मानक पुस्तकालयों और पॉज़िक्स में सी प्रक्रिया नियंत्रण कार्य की तरह है। सीप पटकथा एक पर्यावरण चर बनाती है pattern पहला तर्क सम्मिलित है,फिर वह तर्क छोड़ देता है और प्रत्येक फ़ाइल में पैटर्न के लिए अजीब दिखता है।

~ यह देखने के लिए जाँच करता है कि क्या उसका बायाँ संकार्य उसके दाएँ संकार्य से मेल खाता है; !~ इसका उलटा है। ध्यान दें कि नियमित अभिव्यक्ति एक पैटर्न है और इसे चर में संग्रहीत किया जा सकता है।

अगला तरीका आदेश पंक्ति चर कार्यभार का उपयोग करता है,जिसमें एडब्ल्यूके के तर्क को एक चर के कार्यभार के रूप में देखा जा सकता है

#!/bin/sh

pattern="$1"
shift
awk '$0 ~ pattern { print FILENAME ":" $0 }' "pattern=$pattern" "$@"

या आप -v var=value आदेश पंक्ति विकल्प (जैसे awk -v pattern= $pattern ...) का उपयोग कर सकते हैं।

अंत में,यह शुद्ध एडब्ल्यूके में लिखा गया है,बिना सीप की मदद के या एडब्ल्यूके पटकथा के कार्यान्वयन के बारे में बहुत अधिक जानने की आवश्यकता के बिना (जैसा कि आदेश पंक्ति पर चर कार्य सौंपता है), लेकिन थोड़ा लंबा है: <वाक्यविन्यास लैंग = awk>

 BEGIN {
    pattern = ARGV[1]
    for (i = 1; i < ARGC; i++) # remove first argument
        ARGV[i] = ARGV[i + 1]
    ARGC--
    if (ARGC == 1) { # the pattern was the only thing, so force read from standard input (used by book)
        ARGC = 2
        ARGV[1] = "-"
    }
}
$0 ~ pattern { print FILENAME ":" $0 }

</वाक्यविन्यास हाइलाइट> BEGIN e> न केवल पहले तर्क को निकालने के लिए आवश्यक है, बल्कि इसे बाद में फ़ाइल नाम के रूप में व्याख्या किए जाने से रोकने के लिए भी आवश्यक है BEGIN ब्लॉक समाप्त होता है। ARGC, तर्कों की संख्या, हमेशा ≥1 होने की गारंटी है, जैसा कि ARGV[0] आदेश का नाम है जो पटकथा को निष्पादित करता है,अक्सर तार "awk". यह भी ध्यान दें ARGV[ARGC] खाली तार है, "". # एक टिप्पणी आरंभ करता है जो पंक्ति के अंत तक विस्तृत होती है।

ध्यान दें if खंड था। एडब्ल्यूके केवल यह देखने के लिए जाँच करता है कि कमांड चलाने से पहले उसे मानक निविष्ट से पढ़ना चाहिए या नहीं। इस का मतलब है कि एडब्ल्यूके केवल इसलिए काम करता है क्योंकि यहाँ कोई फ़ाइल नाम नहीं है,केवल पहले जांचा गया है prog चलाया गया है। कोई विवाद न हो इसलिए ARGC से 1 को स्पष्ट रूप से स्थिर करते है ,और जब एडब्ल्यूके को लगता है कि यहाँ कोई और निविष्ट फाइल नहीं है तब वो उसे छोड़ देगा। इसलिए,आपको विशेष फ़ाइल नाम के साथ मानक निविष्ट से पढ़ने के लिए स्पष्ट रूप से कहने की आवश्यकता है -.

Awk prog

स्व-निहित एडब्ल्यूके पटकथा

यूनिक्स जैसे स्वयं निहित संचालक तंत्र (यूनिक्स) सिंटैक्स का उपयोग करके एडब्ल्यूके पटकथा का निर्माण किया जा सकता है।

उदाहरण के लिए,एक पटकथा जो किसी फ़ाइल की सामग्री को छापती है,नाम की फ़ाइल बनाकर बनाई जा सकती है print.awk निम्नलिखित सामग्री के साथ:

#!/usr/bin/awk -f
{ print $0 }

इसके साथ आह्वान किया जा सकता है: ./print.awk <filename>

-f e> एडब्ल्यूके को बताता है कि एडब्ल्यूके प्रोग्राम को पढ़ने के लिए जो तर्क दिया गया है,वह फ़ाइल है,जो कि वही ध्वज है जिसका उपयोग sed में किया जाता है। चूंकि वे अक्सर एक पंक्तिय लिए उपयोग किए जाते हैं,ये दोनों प्रोग्राम एक अलग फाइल के बजाय आदेश पंक्ति तर्क के रूप में दिए गए प्रोग्राम को निष्पादित करने के लिए पूर्वनिर्धारित होते हैं।

संस्करण और कार्यान्वयन

एडब्ल्यूके मूल रूप से 1977 में लिखा गया था और संस्करण 7 यूनिक्स के साथ वितरित किया गया था।

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

यूनिक्स के पुराने संस्करण,जैसे यूनिक्स/32वी,सम्मिलित हैं awkcc,जिसने एडब्ल्यूके को C में बदल दिया। कर्निघन ने एडब्ल्यूके को C++ में बदलने के लिए एक प्रोग्राम लिखा; इसकी स्थिति ज्ञात नहीं है।[11]

  • बीडब्लूके एडब्ल्यूके, जिसे nawk के नाम से भी जाना जाता है,ब्रायन कर्निघन के संस्करण को संदर्भित करता है। मूल रूप से भाषा का वर्णन करने वाली पुस्तक के साथ इस शब्द के उपयोग के कारण इसे वन ट्रू एडब्ल्यूके करार दिया गया है और तथ्य यह है कि कर्निघन एडब्ल्यूके के मूल लेखकों में से एक थे।[4] FreeBSD इस संस्करण को वन ट्रू ओक के रूप में संदर्भित करता है।[12] इस संस्करण में ऐसी विशेषताएं भी हैं जो पुस्तक में नहीं हैं, जैसे tolower तथा ENVIRON जिनकी व्याख्या ऊपर की गई है; विवरण के लिए स्रोत संग्रह में FIXES फ़ाइल देखें। इस संस्करण का उपयोग, उदाहरण के लिए, एंड्रॉयड (ऑपरेटिंग सिस्टम), FreeBSD, NetBSD, OpenBSD, macOS, और इलुमोस द्वारा किया जाता है। ब्रायन कर्निघन और अर्नोल्ड रॉबिंस, नॉक के लिए स्रोत रिपॉजिटरी में मुख्य योगदानकर्ता हैं: github.com/onetrueawk/awk.
  • (GNU एडब्ल्यूके) एक और फ्री-सॉफ्टवेयर कार्यान्वयन है और एकमात्र कार्यान्वयन है जो अंतर्राष्ट्रीयकरण और स्थानीयकरण और TCP/IP नेटवर्किंग को लागू करने में गंभीर प्रगति करता है। यह मूल कार्यान्वयन के स्वतंत्र रूप से उपलब्ध होने से पहले लिखा गया था। इसमें अपना स्वयं का डिबगर सम्मिलित है, और इसकी प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) उपयोगकर्ता को एक स्क्रिप्ट के लिए मापित प्रदर्शन संवर्द्धन करने में सक्षम बनाती है। यह उपयोगकर्ता को साझा पुस्तकालयों के साथ कार्यक्षमता बढ़ाने में भी सक्षम बनाता है। कुछ लिनक्स वितरणों में उनके पूर्वनिर्धारित एडब्ल्यूके कार्यान्वयन के रूप में गौक सम्मिलित है।
  • मॉक माइक ब्रेनन द्वारा बाईटकोड दुभाषिया पर आधारित एक बहुत तेज़ एडब्ल्यूके कार्यान्वयन है।
  • libmawk mawk का एक फोर्क है, जो आवेदन को एडब्ल्यूके दुभाषियों के कई समानांतर उदाहरणों को अंतर्निहित करने की अनुमति देता है।
  • एडब्ल्यूकेa (जिसका फ्रंट एंड mawk प्रोग्राम के ऊपर लिखा हुआ है) C कोड में एडब्ल्यूके पटकथा का एक और अनुवादक है जो संकलित किया जाता है, लेखक के libawka.a सहित सांख्यिकीय रूप से, परिणामी निष्पादनयोग्य काफी तेज हो जाते हैं और लेखक के परीक्षणों के अनुसार, एडब्ल्यूके,पर्ल, या Tcl के अन्य संस्करणों के साथ बहुत अच्छी तरह से तुलना करते हैं। छोटी पटकथा 160–170 kB के प्रोग्राम में बदल जाएँगी।
  • टॉक (थॉम्पसन एडब्ल्यूके) सोलारिस (प्रचालन तंत्र), DOS, OS/2, और माइक्रोसॉफ्ट विंडोज के लिए एक एडब्ल्यूके संकलक है, जो पहले थॉम्पसन ऑटोमेशन सॉफ्टवेयर द्वारा बेचा जाता था (जिसने अपनी गतिविधियाँ बंद कर दी हैं)।[14]
  • Jawk Java (प्रोग्रामिंग लैंग्वेज) में एडब्ल्यूके को लागू करने की एक परियोजना है, जिसे सोर्स फोर्ज  पर होस्ट किया गया है।[15] एडब्ल्यूके पटकथा (यानी, जावा थ्रेड्स, सॉकेट्स, संग्रह, आदि) के भीतर जावा सुविधाओं तक पहुंच प्रदान करने के लिए भाषा में विस्तार जोड़े गए हैं।
  • xगॉक गॉक का एक कांटा है[16] जो गतिशील रूप से लोड करने योग्य पुस्तकालयों के साथ गॉक का विस्तार करता है। XMLगॉक विस्तार को आधिकारिक GNU एडब्ल्यूके रिलीज़ 4.1.0 में एकीकृत किया गया था।
  • 'QSEAWK' QSE लाइब्रेरी में सम्मिलित एक एम्बेडेड एडब्ल्यूके दुभाषिया कार्यान्वयन है जो C (प्रोग्रामिंग भाषा) और C++ के लिए एम्बेडिंग अप्लिकेशन प्रोग्रामिंग अंतरफलक (API) प्रदान करता है।[17]
  • libfawk सी में लिखा गया एक बहुत छोटा,केवल-फ़ंक्शन,रैत्रांत,व्यवस्था करने योग्य दुभाषिया है
  • बिजीबॉक्स में दिमित्री ज़खारोव द्वारा लिखित एडब्ल्यूके कार्यान्वयन सम्मिलित है। यह अंतर्निहित व्यवस्था के लिए उपयुक्त एक बहुत छोटा कार्यान्वयन है।
  • माइकल पार्कर द्वारा CLAWK एक ही लेखक की नियमित अभिव्यक्ति लाइब्रेरी के आधार पर सामान्य लिस्प में एडब्ल्यूके कार्यान्वयन प्रदान करता है।[18]

किताबें

  • अहो, अल्फ्रेड वी .; कर्निघन, ब्रायन डब्ल्यू .; वेनबर्गर, पीटर जे। (1988-01-01)। एडब्ल्यूके प्रोग्रामिंग लैंग्वेज । न्यूयॉर्क, एनवाई: एडिसन-वेस्ले । आईएसबीएन 0-201-07981-एक्स. 2017-01-22 को पुनःप्राप
  • रॉबिन्स, अर्नोल्ड (2001-05-15)। प्रभावी एडब्ल्यूके प्रोग्रामिंग (तीसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया । आईएसबीएन 0-596-00070-7. 2009-04-16 को पुनःप्राप्त ।
  • डौघर्टी, डेल ; रॉबिन्स, अर्नोल्ड (1997-03-01)। सेड और ऑक (दूसरा संस्करण)। सेबेस्टोपोल, सीए: ओ रेली मीडिया। आईएसबीएन 1-56592-225-5. 2009-04-16 को पुनःप्राप्त ।
  • रॉबिन्स, अर्नोल्ड (2000)। प्रभावी एडब्ल्यूके प्रोग्रामिंग: Gnu एडब्ल्यूके के लिए उपयोगकर्ता की मार्गदर्शिका (1.0.3 संस्करण)। ब्लूमिंगटन, आईएन: आईयूनिवर्स । आईएसबीएन 0-595-10034-1. 12 अप्रैल 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।

यह भी देखें

अग्रिम पठन

  • एंडी ओरम (19 मई, 2021)। "ऑक: द पावर एंड प्रॉमिस ऑफ़ ए 40-ईयर-ओल्ड लैंग्वेज" । जीवाश्म । 9 जून, 2021 को पुनःप्राप्त ।
  • हैमिल्टन, नाओमी (30 मई, 2008)। "प्रोग्रामिंग भाषाओं का AZ: एडब्ल्यूके" । कंप्यूटरवर्ल्ड । 2008-12-12 को पुनःप्राप्त । - एडब्ल्यूके पर अल्फ्रेड वी. अहो के साथ साक्षात्कार
  • रॉबिंस, डेनियल (2000-12-01)। "एडब्ल्यूके by example, भाग 1: अजीब नाम के साथ महान भाषा का परिचय" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त ।
  • रॉबिन्स, डैनियल (2001-01-01)। "एडब्ल्यूके by example, Part 2: Records, Loops, and arrays" । सामान्य धागे । आईबीएम डेवलपर वर्क्स । 2009-04-16 को पुनःप्राप्त ।
  • रॉबिन्स, डैनियल (2001-04-01)। "एडब्ल्यूके by example, Part 3: String functions and ... checkbooks?" . सामान्य धागे । आईबीएम डेवलपर वर्क्स। 19 मई 2009 को मूल से संग्रहीत । 2009-04-16 को पुनःप्राप्त ।
  • एडब्ल्यूके - 60 मिनट में विशेषज्ञ बनें
  • एडब्ल्यूके: पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज - शेल और यूटिलिटीज रेफरेंस, द सिंगल यूनिक्स स्पेसिफिकेशन , ओपन ग्रुप से वर्जन 4
  • गॉक(1) -  लिनक्स यूजर मैनुअल - यूजर कमांड्स

References










  1. 1.0 1.1 James W. Livingston (May 2, 1988). "ग्रेट ऑक प्रोग्राम नो बर्डब्रेन है". Digital Review. p. 91.
  2. Raymond, Eric S. "Applying Minilanguages". The Art of Unix Programming. Case Study: awk. Archived from the original on July 30, 2008. Retrieved May 11, 2010. The awk action language is Turing-complete, and can read and write files.
  3. Aho, Alfred V.; Kernighan, Brian W.; Weinberger, Peter J. (September 1, 1978). Awk - एक पैटर्न स्कैनिंग और प्रोसेसिंग लैंग्वेज (दूसरा संस्करण) (Technical report). Unix Seventh Edition Manual, Volume 2. Bell Telephone Laboratories, Inc. Retrieved February 1, 2020.
  4. 4.0 4.1 Aho, Alfred V.; Kernighan, Brian W.; Weinberger, Peter J. (1988). AWK प्रोग्रामिंग लैंग्वेज. Addison-Wesley Publishing Company. ISBN 9780201079814. Retrieved 16 May 2015.
  5. "UNIX विशेष: प्रोफेसर कर्निघन और ब्रिल्सफ़ोर्ड". Computerphile. September 30, 2015. Archived from the original on 2021-11-22.
  6. "एकल यूनिक्स विशिष्टता, संस्करण 3, यूटिलिटीज इंटरफेस टेबल". Archived from the original on 2018-01-05. Retrieved 2005-12-18.
  7. "Chapter 15. Commands and Utilities". लिनक्स मानक आधार कोर विशिष्टता 4.0 (Technical report). Linux Foundation. 2008. Archived from the original on 2019-10-16. Retrieved 2020-02-01.
  8. 8.0 8.1 8.2 Robbins, Arnold (March 2014). "GNU प्रोजेक्ट और मैं: GNU AWK के साथ 27 साल" (PDF). skeeve.com. Archived (PDF) from the original on October 6, 2014. Retrieved October 4, 2014.
  9. Dougherty, Dale; Robbins, Arnold (1997). मास्टर और ओक (2nd ed.). Sebastopol, CA: O'Reilly. p. 221. ISBN 1-565-92225-5.
  10. 10.0 10.1 "रिकॉर्ड्स (GNU Awk यूजर गाइड)". Archived from the original on 2020-06-14. Retrieved 2020-05-23.
  11. Kernighan, Brian W. (April 24–25, 1991). AWK से C++ अनुवादक (PDF). Usenix C++ Conference. Washington, DC. pp. 217–228. Archived (PDF) from the original on 2020-06-22. Retrieved 2020-02-01.
  12. "AWK awk को FreeBSD कोर में आयात करने के लिए FreeBSD कार्य लॉग". May 16, 2005. Archived from the original on September 8, 2013. Retrieved September 20, 2006.
  13. gawk-csv documentation at http://gawkextlib.sourceforge.net/csv/gawk-csv.html Archived 2020-03-25 at the Wayback Machine
  14. James K. Lawless (May 1, 1997). "TAWK कंपाइलर की जांच". Dr. Dobb's Journal. Archived from the original on February 21, 2020. Retrieved February 21, 2020.
  15. "SourceForge पर जॉक". Archived from the original on 2007-05-27. Retrieved 2006-08-23.
  16. "xgawk होम पेज". Archived from the original on 2013-04-18. Retrieved 2013-05-07.
  17. "GitHub पर QSEAWK". GitHub. Archived from the original on 2018-06-11. Retrieved 2017-09-06.
  18. "गिटहब पर CLAWK". GitHub. Archived from the original on 2021-08-25. Retrieved 2021-06-01.

बाहरी संबंध