लिनक्स कमांड जानें - गॉक

नाम

गॉक - पैटर्न स्कैनिंग और प्रसंस्करण भाषा

सार

गॉक [POSIX या GNU शैली विकल्प] -f प्रोग्राम-फ़ाइल [ - ] फ़ाइल ...
गॉक [पॉज़िक्स या जीएनयू शैली विकल्प] [ - ] प्रोग्राम-पाठ फ़ाइल ...

pgawk [POSIX या GNU शैली विकल्प] -f प्रोग्राम-फ़ाइल [ - ] फ़ाइल ...
pgawk [POSIX या जीएनयू शैली विकल्प] [ - ] कार्यक्रम-पाठ फ़ाइल ...

विवरण

गॉक एडब्ल्यूके प्रोग्रामिंग भाषा का जीएनयू प्रोजेक्ट का कार्यान्वयन है। यह POSIX 1003.2 कमांड भाषा और उपयोगिता मानक में भाषा की परिभाषा के अनुरूप है। बदले में यह संस्करण यूनिक्स के सिस्टम वी रिलीज 4 संस्करण में मिली अतिरिक्त सुविधाओं के साथ अहो, कर्निघान और वेनबर्गर द्वारा एडब्ल्यूके प्रोग्रामिंग भाषा में वर्णन पर आधारित है। गॉक भी हाल ही में बेल प्रयोगशालाओं के विस्तार के विस्तार, और कई जीएनयू-विशिष्ट एक्सटेंशन प्रदान करता है।

पगॉक गॉक का प्रोफाइलिंग संस्करण है। यह गॉक करने के हर तरीके में समान है, सिवाय इसके कि प्रोग्राम अधिक धीरे-धीरे चलते हैं, और यह स्वचालित रूप से फ़ाइल awkprof.out में निष्पादन प्रोफ़ाइल उत्पन्न करता है। नीचे - प्रोफाइल विकल्प देखें।

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

विकल्प प्रारूप

गॉक विकल्प या तो पारंपरिक पॉज़िक्स एक अक्षर विकल्प हो सकते हैं, या जीएनयू शैली के लंबे विकल्प हो सकते हैं। POSIX विकल्प एकल `` - 'से शुरू होते हैं, जबकि लंबे विकल्प `` -' से शुरू होते हैं। जीएनयू-विशिष्ट विशेषताओं और पॉज़िक्स-अनिवार्य सुविधाओं दोनों के लिए लंबे विकल्प प्रदान किए जाते हैं।

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

विकल्प

गॉक वर्णमाला के अनुसार सूचीबद्ध निम्नलिखित विकल्पों को स्वीकार करता है।

-एफ एफएस

--फील्ड-सेपरेटर एफएस इनपुट फ़ील्ड सेपरेटर ( एफएस पूर्वनिर्धारित चर का मान) के लिए एफएस का उपयोग करें।

-v var = val

- प्रोग्राम के निष्पादन से पहले, वैरिएबल var = वैल वैरिएबल वैर को वैल्यू वैल असाइन करें। ऐसे परिवर्तनीय मान AWK प्रोग्राम के BEGIN ब्लॉक में उपलब्ध हैं।

-फ प्रोग्राम-फाइल

- फ़ाइल प्रोग्राम-फ़ाइल पहले कमांड लाइन तर्क के बजाय, फ़ाइल प्रोग्राम-फ़ाइल से AWK प्रोग्राम स्रोत पढ़ें। एकाधिक -f (या --file ) विकल्पों का उपयोग किया जा सकता है।

-एमएफ एनएनएन

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

-W compat

-W पारंपरिक

--compat

- सुसंगतता संगतता मोड में चलाएं। संगतता मोड में, गॉक यूनिक्स के समान रूप से व्यवहार करता है; जीएनयू-विशिष्ट एक्सटेंशन में से कोई भी मान्यता प्राप्त नहीं है। इस विकल्प के अन्य रूपों पर - टर्मिनल का उपयोग पसंद किया जाता है। अधिक जानकारी के लिए नीचे, जीएनयू एक्सटेंशन देखें।

-W कॉपी बाएं

-W कॉपीराइट

--copyleft

--copyright मानक आउटपुट पर जीएनयू कॉपीराइट सूचना संदेश का संक्षिप्त संस्करण प्रिंट करें और सफलतापूर्वक बाहर निकलें।

-W डंप-चर [ = फ़ाइल ]

- डंप-वैरिएबल [ = फ़ाइल ] वैश्विक चर, उनके प्रकार और अंतिम मानों की एक क्रमबद्ध सूची को फ़ाइल में प्रिंट करें। अगर कोई फ़ाइल उपलब्ध नहीं है, तो गॉक वर्तमान निर्देशिका में awkvars.out नाम की एक फ़ाइल का उपयोग करता है।

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

-W मदद

-W उपयोग

--मदद

--usage मानक आउटपुट पर उपलब्ध विकल्पों का अपेक्षाकृत संक्षिप्त सारांश प्रिंट करें। ( जीएनयू कोडिंग मानकों के अनुसार , ये विकल्प तत्काल, सफल निकास का कारण बनते हैं।)

-W लिंट [ = घातक ]

--lint [ = घातक ] उन संरचनाओं के बारे में चेतावनियां प्रदान करें जो अन्य एडब्ल्यूके कार्यान्वयन के लिए संदिग्ध या गैर-पोर्टेबल हैं। घातक के वैकल्पिक तर्क के साथ, लिंट चेतावनियां घातक त्रुटियां बन जाती हैं। यह कठोर हो सकता है, लेकिन इसका उपयोग निश्चित रूप से क्लीनर एडब्ल्यूके कार्यक्रमों के विकास को प्रोत्साहित करेगा।

-W लिंट-पुरानी

- लिंट-पुरानी संरचनाओं के बारे में चेतावनियां प्रदान करें जो यूनिक्स अजीब के मूल संस्करण के लिए पोर्टेबल नहीं हैं।

-W जेन-पीओ

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

-W गैर-दशमलव डेटा

--non-दशमलव-डेटा इनपुट डेटा में ऑक्टल और हेक्साडेसिमल मानों को पहचानें। महान सावधानी के साथ इस विकल्प का प्रयोग करें!

-W posix

--posix यह निम्नलिखित अतिरिक्त प्रतिबंधों के साथ संगतता मोड चालू करता है:

*

\ x भागने के अनुक्रम पहचान नहीं हैं।

*

फ़ील्ड सेपरेटर्स के रूप में केवल स्पेस और टैब एक्ट करते हैं जब एफएस एक ही स्थान पर सेट होता है, तो न्यूलाइन नहीं होती है।

*

आप लाइनों को जारी नहीं रख सकते हैं ? और :।

*

कीवर्ड फ़ंक्शन के लिए समानार्थी func पहचान नहीं है।

*

ऑपरेटरों ** और ** = का उपयोग ^ और ^ = के स्थान पर नहीं किया जा सकता है।

*

Fflush () फ़ंक्शन उपलब्ध नहीं है।

-W प्रोफाइल [ = prof_file ]

--profile [ = prof_file ] prof_file को प्रोफाइलिंग प्रोफाइल भेजें। डिफ़ॉल्ट awkprof.out है । जब गॉक के साथ चलाया जाता है, तो प्रोफाइल प्रोग्राम का सिर्फ एक 'सुंदर मुद्रित' संस्करण है। जब pgawk के साथ चलाया जाता है, प्रोफ़ाइल में बाएं मार्जिन में प्रोग्राम में प्रत्येक कथन की निष्पादन गणना होती है और प्रत्येक उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन के लिए फ़ंक्शन कॉल गणना होती है।

-W पुनः अंतराल

--re-interval नियमित अभिव्यक्ति मिलान में अंतराल अभिव्यक्तियों के उपयोग को सक्षम करें (नीचे नियमित अभिव्यक्तियां देखें)। अंतराल अभिव्यक्ति पारंपरिक रूप से एडब्ल्यूके भाषा में उपलब्ध नहीं थीं। POSIX मानक ने उन्हें एक दूसरे के साथ संगत और egrep संगत बनाने के लिए जोड़ा। हालांकि, उनके उपयोग पुराने एडब्ल्यूके कार्यक्रमों को तोड़ने की संभावना है, इसलिए गॉक केवल उन्हें प्रदान करता है अगर उन्हें इस विकल्प के साथ अनुरोध किया जाता है, या जब --posix निर्दिष्ट किया जाता है।

-W स्रोत कार्यक्रम-पाठ

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

-W संस्करण

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

- विकल्पों के अंत सिग्नल। यह एडब्ल्यूके कार्यक्रम के लिए आगे के तर्कों को '`-' 'से शुरू करने के लिए और तर्क देने के लिए उपयोगी है। यह मुख्य रूप से अधिकांश अन्य POSIX प्रोग्रामों द्वारा उपयोग किए जाने वाले तर्क पार्सिंग सम्मेलन के साथ स्थिरता के लिए है।

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

एडब्ल्यूके कार्यक्रम निष्पादन

एक एडब्ल्यूके कार्यक्रम में पैटर्न-क्रिया विवरण और वैकल्पिक फ़ंक्शन परिभाषाओं का अनुक्रम होता है।

पैटर्न { एक्शन स्टेटमेंट्स }

कार्य का नाम ( पैरामीटर सूची ) { कथन }

गॉक सबसे पहले कार्यक्रम-फ़ाइल (एस) से प्रोग्राम स्रोत को पढ़ता है, अगर तर्क से - स्रोत , या कमांड लाइन पर पहले गैर-विकल्प तर्क से निर्दिष्ट किया गया है। कमांड लाइन पर -f और --ource विकल्प कई बार उपयोग किया जा सकता है। गॉक प्रोग्राम टेक्स्ट को पढ़ता है जैसे कि सभी प्रोग्राम-फाइल एस और कमांड लाइन स्रोत ग्रंथों को एकसाथ संयोजित किया गया था। यह एडब्ल्यूके कार्यों के पुस्तकालयों के निर्माण के लिए उपयोगी है, इन्हें उपयोग करने वाले प्रत्येक नए एडब्ल्यूके प्रोग्राम में उन्हें शामिल किए बिना। यह कमांड लाइन प्रोग्राम के साथ पुस्तकालय कार्यों को मिश्रण करने की क्षमता भी प्रदान करता है।

पर्यावरण चर AWKPATH -f विकल्प के साथ नामित स्रोत फ़ाइलों को ढूंढते समय उपयोग करने के लिए एक खोज पथ निर्दिष्ट करता है। यदि यह चर मौजूद नहीं है, तो डिफ़ॉल्ट पथ "।: Usr / local / share / awk" है । (वास्तविक निर्देशिका भिन्न हो सकती है, इस पर निर्भर करता है कि गॉक कैसे बनाया गया था और स्थापित किया गया था।) यदि -फ विकल्प में दिया गया फ़ाइल नाम '`/' 'वर्ण होता है, तो कोई पथ खोज नहीं की जाती है।

गॉक ने निम्नलिखित क्रम में एडब्ल्यूके कार्यक्रम निष्पादित किए। सबसे पहले, -v विकल्प के माध्यम से निर्दिष्ट सभी परिवर्तनीय असाइनमेंट किए जाते हैं। इसके बाद, गॉक प्रोग्राम को एक आंतरिक रूप में संकलित करता है। फिर, गॉक BEGIN ब्लॉक (ओं) (यदि कोई हो) में कोड निष्पादित करता है, और उसके बाद ARGV सरणी में नामित प्रत्येक फ़ाइल को पढ़ने के लिए आगे बढ़ता है। यदि कमांड लाइन पर नाम की कोई फाइल नहीं है, तो गॉक मानक इनपुट पढ़ता है।

यदि कमांड लाइन पर एक फ़ाइल नाम में var = val है तो इसे एक वैरिएबल असाइनमेंट के रूप में माना जाता है। चर वैर को वैल्यू वैल असाइन किया जाएगा। (यह तब भी होता है जब किसी भी BEGIN ब्लॉक को चलाया जाता है।) कमांड लाइन वैरिएबल असाइनमेंट चरम रूप से वैरिएबल को मान निर्दिष्ट करने के लिए सबसे उपयोगी है AWK फ़ील्ड और रिकॉर्ड्स में इनपुट कैसे टूटा हुआ है इसे नियंत्रित करने के लिए उपयोग करता है। यह एक डेटा डेटा पर एकाधिक पास की आवश्यकता होने पर राज्य को नियंत्रित करने के लिए भी उपयोगी है।

यदि एआरजीवी के किसी विशेष तत्व का मूल्य खाली है ( "" ), तो गॉक इस पर छोड़ देता है।

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

अंत में, सभी इनपुट समाप्त हो जाने के बाद, गॉक ईएनडी ब्लॉक (यदि कोई हो) में कोड निष्पादित करता है।

चर, रिकॉर्ड्स, और फ़ील्ड

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

अभिलेख

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

खेत

चूंकि प्रत्येक इनपुट रिकॉर्ड पढ़ा जाता है, इसलिए गॉक फ़ील्ड सेक्टर को फ़ील्ड विभाजक के रूप में एफएस वैरिएबल के मान का उपयोग करके फ़ील्ड में रिकॉर्ड विभाजित करता है। यदि एफएस एक ही चरित्र है, तो फ़ील्ड उस चरित्र से अलग हो जाते हैं। यदि एफएस शून्य स्ट्रिंग है, तो प्रत्येक व्यक्तिगत चरित्र एक अलग क्षेत्र बन जाता है। अन्यथा, एफएस एक पूर्ण नियमित अभिव्यक्ति होने की उम्मीद है। विशेष मामले में कि एफएस एक ही स्थान है, फ़ील्ड रिक्त स्थान और / या टैब और / या न्यूलाइन के रनों से अलग होते हैं। (लेकिन नीचे, --posix की चर्चा देखें)। नोट: IGNORECASE का मान (नीचे देखें) यह भी प्रभावित करता है कि एफएस नियमित अभिव्यक्ति के दौरान फ़ील्ड कैसे विभाजित होते हैं, और आरएस नियमित रूप से अभिव्यक्ति करते समय रिकॉर्ड कैसे अलग किए जाते हैं।

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

इनपुट रिकॉर्ड में प्रत्येक फ़ील्ड को इसकी स्थिति, $ 1 , $ 2 , और इसी तरह से संदर्भित किया जा सकता है। $ 0 संपूर्ण रिकॉर्ड है। क्षेत्रों को स्थिरांक द्वारा संदर्भित करने की आवश्यकता नहीं है:

एन = 5
प्रिंट $ एन

इनपुट रिकॉर्ड में पांचवें क्षेत्र को प्रिंट करता है।

परिवर्तनीय एनएफ इनपुट रिकॉर्ड में फ़ील्ड की कुल संख्या पर सेट है।

गैर-मौजूद फ़ील्ड (यानि $ एनएफ के बाद फ़ील्ड) के संदर्भ नल-स्ट्रिंग का उत्पादन करते हैं। हालांकि, एक अस्तित्वहीन फ़ील्ड को असाइन करना (उदाहरण के लिए, $ (एनएफ + 2) = 5 ) एनएफ के मान को बढ़ाता है, नल स्ट्रिंग के साथ किसी भी हस्तक्षेप वाले फ़ील्ड को उनके मान के रूप में बनाता है, और $ 0 के मान को फिर से संक्रमित करने का कारण बनता है खेतों को ओएफएस के मूल्य से अलग किया जा रहा है। नकारात्मक क्रमांकित फ़ील्ड के संदर्भ एक घातक त्रुटि का कारण बनते हैं। एनएफ को कम करने से नए मूल्य को खोने के लिए फ़ील्ड के मूल्यों का कारण बनता है, और $ 0 का मूल्य पुन: संकलित किया जाता है, जिसमें ओएफएस के मूल्य से अलग किया जा सकता है।

किसी मौजूदा फ़ील्ड में मान असाइन करने से पूरे रिकॉर्ड को पुनर्निर्मित किया जाता है जब $ 0 का संदर्भ दिया जाता है। इसी तरह, $ 0 के लिए मान निर्दिष्ट करने से रिकॉर्ड को पुन: लागू किया जा सकता है, जिससे फ़ील्ड के लिए नए मान बनाते हैं।

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

गॉक के अंतर्निर्मित चर हैं:

argc

कमांड लाइन तर्कों की संख्या ( गॉक , या प्रोग्राम स्रोत के विकल्प शामिल नहीं है)।

ARGIND

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

ARGV

कमांड लाइन तर्क के ऐरे। सरणी को 0 से एआरजीसी से अनुक्रमित किया गया है - 1. एआरजीवी की गतिशील रूप से बदलना डेटा के लिए उपयोग की जाने वाली फ़ाइलों को नियंत्रित कर सकता है।

BINMODE

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

CONVFMT

डिफ़ॉल्ट रूप से संख्याओं के लिए रूपांतरण प्रारूप, "% .6 जी"

ENVIRON

वर्तमान वातावरण के मान वाले एक सरणी। सरणी को पर्यावरण चर द्वारा अनुक्रमित किया जाता है, प्रत्येक तत्व उस चर का मान होता है (उदाहरण के लिए, ENVIRON ["HOME"] हो सकता है / home / arnold )। इस सरणी को बदलना उन कार्यक्रमों द्वारा देखे गए पर्यावरण को प्रभावित नहीं करता है जो रीडायरेक्शन या सिस्टम () फ़ंक्शन के माध्यम से स्पॉन्स करते हैं।

errno

अगर सिस्टम त्रुटि गेटलाइन के लिए रीडायरेक्शन कर रही है, गेटलाइन के लिए पढ़ने के दौरान, या क्लोज़ () के दौरान, तो ERRNO में त्रुटि का वर्णन करने वाली स्ट्रिंग होगी। मूल्य गैर-अंग्रेजी लोकेशंस में अनुवाद के अधीन है।

FIELDWIDTHS

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

फ़ाइल का नाम

वर्तमान इनपुट फ़ाइल का नाम। यदि कमांड लाइन पर कोई फ़ाइल निर्दिष्ट नहीं है, तो FILENAME का मान `` - '' है। हालांकि, FILENAME को BEGIN ब्लॉक के अंदर अपरिभाषित किया गया है (जब तक कि Getline द्वारा सेट न किया गया हो )।

एफ एन आर

वर्तमान इनपुट फ़ाइल में इनपुट रिकॉर्ड संख्या।

एफएस

इनपुट फ़ील्ड विभाजक, डिफ़ॉल्ट रूप से एक स्थान। उपरोक्त फ़ील्ड्स देखें।

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

सभी नियमित अभिव्यक्तियों और स्ट्रिंग संचालन की केस-संवेदनशीलता को नियंत्रित करता है। यदि IGNORECASE में गैर-शून्य मान है, तो नियमों में तुलनात्मक तुलना और पैटर्न मिलान, एफएस के साथ फ़ील्ड विभाजन, आरएस के साथ अलग रिकॉर्ड रिकॉर्ड, ~ और ~ ~ , और gensub () , gsub () , अनुक्रमणिका () के साथ नियमित अभिव्यक्ति मिलान , मिलान () , विभाजन () , और उप () अंतर्निर्मित कार्य नियमित अभिव्यक्ति संचालन करते समय सभी मामलों को अनदेखा करते हैं। नोट: ऐरे सबस्क्रिप्टिंग प्रभावित नहीं है, न ही asort () फ़ंक्शन है।

इस प्रकार, यदि IGNORECASE शून्य के बराबर नहीं है, / एबी / सभी तार "ab" , "एबी" , "एबी" , और "एबी" से मेल खाता है। सभी एडब्ल्यूके चर के साथ, IGNORECASE का प्रारंभिक मान शून्य है, इसलिए सभी नियमित अभिव्यक्ति और स्ट्रिंग ऑपरेशंस सामान्य रूप से केस-संवेदी होते हैं। यूनिक्स के तहत, केस को अनदेखा करते समय पूर्ण आईएसओ 885 9 -1 लैटिन -1 वर्ण सेट का उपयोग किया जाता है।

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

एक एडब्ल्यूके कार्यक्रम के भीतर से --लिंट विकल्प का गतिशील नियंत्रण प्रदान करता है। जब सच हो, गॉक प्रिंट लिंट चेतावनी। जब झूठा, यह नहीं करता है। स्ट्रिंग मान "घातक" असाइन किए जाने पर, लिंट चेतावनियां घातक त्रुटियां बन जाती हैं, जैसे --lint = घातक । कोई अन्य सच्चा मूल्य सिर्फ चेतावनियों को प्रिंट करता है।

एनएफ

वर्तमान इनपुट रिकॉर्ड में फ़ील्ड की संख्या।

एन.आर.

अब तक देखे गए इनपुट रिकॉर्ड की कुल संख्या।

OFMT

डिफ़ॉल्ट रूप से संख्याओं के लिए आउटपुट प्रारूप, "% .6 जी"

ओएफएस

आउटपुट फ़ील्ड सेपरेटर, डिफ़ॉल्ट रूप से एक स्पेस।

ओआरएस

आउटपुट रिकॉर्ड विभाजक, डिफ़ॉल्ट रूप से एक नई लाइन।

PROCINFO

इस सरणी के तत्व चल रहे एडब्ल्यूके प्रोग्राम के बारे में जानकारी तक पहुंच प्रदान करते हैं। कुछ प्रणालियों पर, कुछ एन के लिए "समूह एन " के माध्यम से सरणी में तत्व "समूह 1" हो सकते हैं, जो कि प्रक्रिया के पूरक समूहों की संख्या है। इन तत्वों के परीक्षण के लिए ऑपरेटर का प्रयोग करें। निम्नलिखित तत्व उपलब्ध होने की गारंटी है:

PROCINFO [ "egid"]

Getegid (2) सिस्टम कॉल का मूल्य।

PROCINFO [ "euid"]

Geteuid (2) सिस्टम कॉल का मूल्य।

PROCINFO [ "एफएस"]

"एफएस" यदि एफएस के साथ विभाजित क्षेत्र प्रभावी है, या FIELDWIDTHS के साथ विभाजित फ़ील्ड प्रभावी रूप से "FIELDWIDTHS" है।

PROCINFO [ "gid"]

गेटिड (2) सिस्टम कॉल का मूल्य।

PROCINFO [ "pgrpid"]

वर्तमान प्रक्रिया की प्रक्रिया समूह आईडी।

PROCINFO [ "पीआईडी"]

वर्तमान प्रक्रिया की प्रक्रिया आईडी।

PROCINFO [ "ppid"]

वर्तमान प्रक्रिया की मूल प्रक्रिया आईडी।

PROCINFO [ "uid"]

Getuid (2) सिस्टम कॉल का मूल्य।

रुपये

इनपुट रिकॉर्ड विभाजक, डिफ़ॉल्ट रूप से एक नई लाइन।

आर टी

रिकॉर्ड टर्मिनेटर। गॉक इनपुट पाठ में आरटी सेट करता है जो आरएस द्वारा निर्दिष्ट चरित्र या नियमित अभिव्यक्ति से मेल खाता है।

RSTART

मिलान () द्वारा मिलान किए गए पहले वर्ण की अनुक्रमणिका; 0 अगर कोई मैच नहीं है। (इसका तात्पर्य है कि चरित्र सूचकांक एक से शुरू होता है।)

RLENGTH

मिलान () द्वारा मिलान की गई स्ट्रिंग की लंबाई; -1 अगर कोई मैच नहीं है।

SUBSEP

चरित्र "\ 034" डिफ़ॉल्ट रूप से सरणी तत्वों में एकाधिक सबस्क्रिप्ट को अलग करने के लिए प्रयोग किया जाता है।

TEXTDOMAIN

एडब्ल्यूके कार्यक्रम का टेक्स्ट डोमेन; प्रोग्राम के तारों के लिए स्थानीय अनुवादों को खोजने के लिए प्रयोग किया जाता था।

Arrays

Arrays स्क्वायर ब्रैकेट ( [ और ] ) के बीच एक अभिव्यक्ति के साथ subscripted हैं। अगर अभिव्यक्ति एक अभिव्यक्ति सूची है ( expr , expr ...) तो सरणी सबस्क्रिप्ट एक स्ट्रिंग है जिसमें प्रत्येक अभिव्यक्ति के (स्ट्रिंग) मान के संयोजन की समाप्ति होती है , जो SUBSEP चर के मान से अलग होती है। इस सुविधा का उपयोग गुणा आयाम वाले सरणी अनुकरण करने के लिए किया जाता है। उदाहरण के लिए:

मैं = "ए"; जे = "बी"; के = "सी"
एक्स [मैं, जे, के] = "हैलो, दुनिया \ n"

"ए \ 034 बी \ 034 सी" स्ट्रिंग द्वारा अनुक्रमित सरणी x के तत्व में "हैलो, दुनिया \ n" स्ट्रिंग असाइन करता है। एडब्ल्यूके में सभी सरणी सहयोगी हैं, यानी स्ट्रिंग मानों द्वारा अनुक्रमित।

विशेष ऑपरेटर का उपयोग किसी भी या वक्तव्य में किया जा सकता है यह देखने के लिए कि क्या किसी सरणी में एक विशेष मान शामिल है।

अगर (सरणी में वैल) प्रिंट सरणी [वैल]

यदि सरणी में एकाधिक सबस्क्रिप्ट हैं, तो सरणी में (i, j) का उपयोग करें।

किसी भी सरणी के सभी तत्वों पर पुनरावृत्ति करने के लिए लूप में भी निर्माण का उपयोग किया जा सकता है।

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

परिवर्तनीय टाइपिंग और रूपांतरण

चर और फ़ील्ड (फ़्लोटिंग पॉइंट) संख्याएं, या तार, या दोनों हो सकते हैं। एक चर का मूल्य व्याख्या कैसे किया जाता है इसके संदर्भ पर निर्भर करता है। यदि एक संख्यात्मक अभिव्यक्ति में उपयोग किया जाता है, तो इसे एक संख्या के रूप में माना जाएगा, यदि स्ट्रिंग के रूप में उपयोग किया जाता है तो इसे स्ट्रिंग के रूप में माना जाएगा।

एक चर के रूप में इलाज करने के लिए एक चर को मजबूर करने के लिए, इसमें 0 जोड़ें; इसे एक स्ट्रिंग के रूप में माना जाने के लिए मजबूर करने के लिए, इसे नल स्ट्रिंग के साथ संयोजित करें।

जब एक स्ट्रिंग को किसी संख्या में परिवर्तित किया जाना चाहिए, तो रूपांतरण स्ट्रेट (3) का उपयोग करके पूरा किया जाता है। एक संख्या को CONVFMT के मान का उपयोग करके स्प्रिंटफ (3) के लिए प्रारूप स्ट्रिंग के रूप में एक स्ट्रिंग में परिवर्तित किया जाता है, जिसमें चर के चरम मान को तर्क के रूप में किया जाता है। हालांकि, भले ही एडब्ल्यूके में सभी संख्याएं फ्लोटिंग-पॉइंट हों, अभिन्न मूल्य हमेशा पूर्णांक के रूप में परिवर्तित होते हैं। इस प्रकार, दिया गया

CONVFMT = "% 2.2f" a = 12 b = a ""

परिवर्तनीय बी में "12" का स्ट्रिंग मान है और "12.00" नहीं है

गॉक तुलना निम्नानुसार करता है: यदि दो चर संख्यात्मक हैं, तो उनकी तुलनात्मक रूप से की जाती है। यदि एक मान संख्यात्मक है और दूसरे में एक स्ट्रिंग मान है जो `` संख्यात्मक स्ट्रिंग 'है, तो तुलनात्मक रूप से तुलनात्मक रूप से भी की जाती है। अन्यथा, संख्यात्मक मान एक स्ट्रिंग में परिवर्तित हो जाता है और एक स्ट्रिंग तुलना की जाती है। तारों के रूप में, दो तारों की तुलना की जाती है। ध्यान दें कि POSIX मानक स्ट्रिंग स्थिरांक तक भी, हर जगह `` संख्यात्मक स्ट्रिंग 'की अवधारणा को लागू करता है। हालांकि, यह स्पष्ट रूप से गलत है, और गॉक यह नहीं करता है। (सौभाग्य से, यह मानक के अगले संस्करण में तय है।)

ध्यान दें कि स्ट्रिंग स्थिरांक, जैसे कि "57" , संख्यात्मक तार नहीं हैं, वे स्ट्रिंग स्थिरांक हैं। 'न्यूमेरिक स्ट्रिंग' का विचार केवल फ़ील्ड, गेटलाइन इनपुट, FILENAME , ARGV तत्वों, ENVIRON तत्वों और विभाजित () द्वारा बनाए गए सरणी के तत्वों पर लागू होता है जो संख्यात्मक तार होते हैं। मूल विचार यह है कि उपयोगकर्ता इनपुट , और केवल उपयोगकर्ता इनपुट, जो संख्यात्मक दिखता है, इस तरह से व्यवहार किया जाना चाहिए।

अनियमित वैरिएबल में संख्यात्मक मान 0 और स्ट्रिंग मान "" (शून्य, या खाली, स्ट्रिंग) होता है।

ऑक्टल और हेक्साडेसिमल कॉन्सटेंट्स

गॉक के संस्करण 3.1 के साथ , आप अपने एडब्ल्यूके प्रोग्राम स्रोत कोड में सी-स्टाइल ऑक्टल और हेक्साडेसिमल स्थिरांक का उपयोग कर सकते हैं। उदाहरण के लिए, ऑक्टल मान 011 दशमलव 9 के बराबर है, और हेक्साडेसिमल मान 0x11 दशमलव 17 के बराबर है।

स्ट्रिंग Constants

एडब्ल्यूके में स्ट्रिंग स्थिरांक डबल कोट्स ( " ) के बीच संलग्न वर्णों के अनुक्रम हैं। तारों के भीतर, कुछ बचने के अनुक्रमों को सी में माना जाता है। ये हैं:

\\

एक शाब्दिक बैकस्लैश।

\ए

`चेतावनी 'चरित्र; आमतौर पर ASCII बीईएल चरित्र।

\ b

बैकस्पेस।

\ च

फ़ीड बनाएं।

\ n

नई पंक्ति।

\ r

कैरिज रिटर्न।

\ t

क्षैतिज टैब।

\ v

लंबवत टैब

\ x हेक्स अंक

\ X के बाद हेक्साडेसिमल अंकों की स्ट्रिंग द्वारा दर्शाया गया वर्ण। एएनएसआईसी में, निम्नलिखित सभी हेक्साडेसिमल अंकों को बचने के क्रम का हिस्सा माना जाता है। (इस सुविधा को हमें समिति द्वारा भाषा डिजाइन के बारे में कुछ बताना चाहिए।), "\ X1B " ASCIIESC (भागने) चरित्र है।

\ ddd

वर्ण 1-, 2-, या 3 अंकों के अंडाकार अंकों के अनुक्रम द्वारा दर्शाया गया है। उदाहरण के लिए, "\ 033" ASCII ईएससी (भागने) चरित्र है।

\ सी

शाब्दिक चरित्र सी

एस्केप अनुक्रमों का निरंतर नियमित अभिव्यक्तियों के अंदर भी उपयोग किया जा सकता है (उदाहरण के लिए, / [\ t \ f \ n \ r \ v] / मैट व्हाइटस्पेस वर्ण)।

संगतता मोड में, नियमित अभिव्यक्ति स्थिरांक में उपयोग किए जाने पर वर्णमाला और हेक्साडेसिमल से बचने वाले वर्णों का प्रतिनिधित्व शाब्दिक रूप से किया जाता है। इस प्रकार, / एक \ 52b / बराबर / एक \ * बी / है

पैटर्न और क्रियाएँ

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

{प्रिंट}

जो पूरे रिकॉर्ड को प्रिंट करता है।

टिप्पणियां `` # 'चरित्र से शुरू होती हैं, और लाइन के अंत तक जारी रहती हैं। कमान अलग करने के लिए खाली लाइनों का उपयोग किया जा सकता है। आम तौर पर, एक बयान एक नई लाइन के साथ समाप्त होता है, हालांकि, यह ``, '', { , में समाप्त होने वाली लाइनों के मामले में नहीं है ? , : , && , या || । लाइनों में समाप्त होने वाली रेखाएं या अन्यथा भी निम्नलिखित पंक्तियों पर उनके बयान जारी रहे हैं। अन्य मामलों में, इसे एक लाइन के साथ समाप्त करके एक लाइन जारी रखी जा सकती है, इस मामले में नई लाइन को अनदेखा कर दिया जाएगा।

एक पंक्ति पर उन्हें '`;' 'से अलग करके कई कथन लगाए जा सकते हैं। यह पैटर्न-एक्शन जोड़ी (सामान्य मामला) के क्रिया भाग के भीतर, और पैटर्न-क्रिया विवरणों के लिए दोनों बयानों पर लागू होता है।

पैटर्न्स

एडब्ल्यूके पैटर्न निम्न में से एक हो सकता है:

BEGIN अंत / नियमित अभिव्यक्ति / संबंधपरक अभिव्यक्ति पैटर्न और पैटर्न पैटर्न || पैटर्न पैटर्न ? पैटर्न : पैटर्न ( पैटर्न ) ! पैटर्न पैटर्न 1 , पैटर्न 2

BEGIN और END दो विशेष प्रकार के पैटर्न हैं जिन्हें इनपुट के विरुद्ध परीक्षण नहीं किया जाता है। सभी BEGIN पैटर्न के क्रिया भागों को विलय कर दिया गया है जैसे कि सभी कथन एक ही BEGIN ब्लॉक में लिखे गए थे। किसी भी इनपुट को पढ़ने से पहले उन्हें निष्पादित किया जाता है। इसी तरह, सभी ईएनडी ब्लॉक विलय कर दिए जाते हैं, और जब सभी इनपुट समाप्त हो जाते हैं (या जब बाहर निकलने का बयान निष्पादित किया जाता है) निष्पादित किया जाता है। BEGIN और END पैटर्न पैटर्न अभिव्यक्तियों में अन्य पैटर्न के साथ जोड़ा नहीं जा सकता है। BEGIN और END पैटर्न में एक्शन पार्ट्स गुम नहीं हो सकते हैं।

/ नियमित अभिव्यक्ति / पैटर्न के लिए, संबंधित इनपुट प्रत्येक इनपुट रिकॉर्ड के लिए निष्पादित किया जाता है जो नियमित अभिव्यक्ति से मेल खाता है। नियमित अभिव्यक्ति egrep (1) में समान हैं, और नीचे संक्षेप में हैं।

एक संबंधपरक अभिव्यक्ति कार्रवाई के अनुभाग में नीचे परिभाषित किसी भी ऑपरेटरों का उपयोग कर सकती है। ये आम तौर पर परीक्षण करते हैं कि कुछ फ़ील्ड कुछ नियमित अभिव्यक्तियों से मेल खाते हैं या नहीं।

एंड , || , और ! ऑपरेटर तार्किक और तार्किक या तार्किक नहीं हैं, क्रमशः सी में हैं। वे शॉर्ट-सर्किट मूल्यांकन करते हैं, सी में भी, और अधिक आदिम पैटर्न अभिव्यक्तियों के संयोजन के लिए उपयोग किए जाते हैं। अधिकांश भाषाओं में, मूल्यांकन के क्रम को बदलने के लिए ब्रांड्स का उपयोग किया जा सकता है।

?: ऑपरेटर सी में एक ही ऑपरेटर की तरह है। यदि पहला पैटर्न सत्य है तो परीक्षण के लिए उपयोग किया जाने वाला पैटर्न दूसरा पैटर्न है, अन्यथा यह तीसरा है। केवल दूसरे और तीसरे पैटर्न में से एक का मूल्यांकन किया जाता है।

अभिव्यक्ति के पैटर्न 1, पैटर्न 2 रूप को एक श्रेणी पैटर्न कहा जाता है। यह एक रिकॉर्ड के साथ शुरू होने वाले सभी इनपुट रिकॉर्ड्स से मेल खाता है जो पैटर्न 1 से मेल खाता है, और एक रिकॉर्ड तक जारी रहता है जो पैटर्न 2 से मेल खाता है। यह किसी अन्य प्रकार की पैटर्न अभिव्यक्ति के साथ गठबंधन नहीं करता है।

नियमित अभिव्यक्ति

नियमित अभिव्यक्ति egrep में विस्तारित प्रकार है। वे पात्रों से बनाये गये हैं:

सी

गैर-मेटाएक्टेक्टर सी से मेल खाता है।

\सी

शाब्दिक चरित्र सी से मेल खाता है।

न्यूलाइन सहित किसी भी चरित्र से मेल खाता है।

^

एक स्ट्रिंग की शुरुआत से मेल खाता है।

$

एक स्ट्रिंग के अंत से मेल खाता है।

[ एबीसी ... ]

चरित्र सूची, किसी भी अक्षर abc से मेल खाता है ...।

[^ एबीसी ... ]

अस्वीकृत चरित्र सूची, एबीसी को छोड़कर किसी भी चरित्र से मेल खाता है ...।

आर 1 | r2

विकल्प: आर 1 या आर 2 से मेल खाता है।

r1r2

concatenation: आर 1 मैच, और फिर आर 2

आर +

एक या अधिक आर से मेल खाता है।

आर *

शून्य या अधिक आर से मेल खाता है।

आर ?

शून्य या एक आर से मेल खाता है।

( आर )

समूह: मैच आर

आर { एन }

आर { एन ,}

आर { एन , एम } ब्रेसिज़ के अंदर एक या दो संख्या अंतराल अभिव्यक्ति को दर्शाती है। यदि ब्रेसिज़ में एक संख्या है, तो पिछली नियमित अभिव्यक्ति आर को बार-बार दोहराया जाता है। यदि दो अल्पविरामों को अल्पविराम से अलग किया जाता है, तो आर को बार बार दोहराया जाता है। यदि एक नंबर के बाद एक नंबर होता है, तो आर कम से कम बार बार दोहराया जाता है।

अंतराल अभिव्यक्ति केवल तभी उपलब्ध होती है जब कमांड लाइन पर --posix या --re -interval निर्दिष्ट किया गया हो।

\ y

किसी भी शुरुआत या शब्द के अंत में खाली स्ट्रिंग से मेल खाता है।

\ बी

एक शब्द के भीतर खाली स्ट्रिंग से मेल खाता है।

\ <

एक शब्द की शुरुआत में खाली स्ट्रिंग से मेल खाता है।

\>

एक शब्द के अंत में खाली स्ट्रिंग से मेल खाता है।

\ w

किसी भी शब्द-घटक चरित्र (अक्षर, अंक, या अंडरस्कोर) से मेल खाता है।

\ डब्ल्यू

किसी भी चरित्र से मेल खाता है जो शब्द-घटक नहीं है।

\ `

एक बफर (स्ट्रिंग) की शुरुआत में खाली स्ट्रिंग से मेल खाता है।

\ '

एक बफर के अंत में खाली स्ट्रिंग से मेल खाता है।

स्ट्रिंग स्थिरांक (नीचे देखें) में मान्य भागने वाले अनुक्रम नियमित अभिव्यक्तियों में भी मान्य हैं।

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

एक चरित्र वर्ग केवल एक चरित्र सूची के ब्रैकेट के अंदर एक नियमित अभिव्यक्ति में मान्य है। चरित्र वर्गों में शामिल हैं [: , कक्षा को दर्शाने वाला एक कीवर्ड, और :] । POSIX मानक द्वारा परिभाषित वर्ण वर्ग हैं:

[: alnum:]

अक्षरांकीय वर्ण।

[: अल्फा:]

वर्णमाला वर्ण

[: रिक्त:]

अंतरिक्ष या टैब अक्षर।

[: cntrl:]

नियंत्रण अक्षर

[:अंक:]

संख्यात्मक पात्र

[: ग्राफ:]

अक्षर जो प्रिंट करने योग्य और दृश्यमान दोनों हैं। (एक जगह प्रिंट करने योग्य है, लेकिन दिखाई नहीं दे रही है, जबकि एक दोनों है।)

[: कम:]

लोअर-केस वर्णमाला वर्ण।

[: प्रिंट:]

प्रिंट करने योग्य वर्ण (वर्ण जो नियंत्रण वर्ण नहीं हैं।)

[: punct:]

विराम चिह्न (वर्ण जो अक्षर, अंक, नियंत्रण वर्ण या स्पेस वर्ण नहीं हैं)।

[: अंतरिक्ष:]

स्पेस कैरेक्टर (जैसे स्पेस, टैब और फॉर्मफीड, कुछ नाम)।

[ऊपरी:]

ऊपरी-मामले वर्णमाला वर्ण।

[: xdigit:]

वर्ण जो हेक्साडेसिमल अंक हैं।

उदाहरण के लिए, पॉज़िक्स मानक से पहले, अल्फान्यूमेरिक वर्णों से मेल खाने के लिए, आपको लिखना होगा / [ए-ज़ा-जे 0-9] / । यदि आपके चरित्र सेट में अन्य वर्णमाला वर्ण थे, तो यह उनसे मेल नहीं खाएगा, और यदि आपका चरित्र सेट ASCII से भिन्न रूप से एकत्रित होता है, तो यह ASCII अल्फान्यूमेरिक वर्णों से भी मेल नहीं खाता है। POSIX चरित्र वर्गों के साथ, आप / [[: alnum:]] / / लिख सकते हैं, और यह आपके चरित्र सेट में वर्णमाला और संख्यात्मक वर्णों से मेल खाता है।

चरित्र सूचियों में दो अतिरिक्त विशेष अनुक्रम दिखाई दे सकते हैं। ये गैर-ASCII वर्ण सेट पर लागू होते हैं, जिनमें सिंगल प्रतीकों ( कोलाटिंग तत्व कहा जाता है ) हो सकता है जो एक से अधिक वर्णों के साथ-साथ कई वर्ण जो कोटिंग , या सॉर्टिंग, उद्देश्यों के बराबर हैं, के साथ प्रदर्शित होते हैं। (उदाहरण के लिए, फ्रेंच में, एक सादा `` ई '' और एक गंभीर-उच्चारण ई 'बराबर हैं।)

कोटिंग प्रतीक

एक कोटिंग प्रतीक एक मल्टी-कैरेक्टर कोटिंग तत्व है जिसमें संलग्न है [। और ।] । उदाहरण के लिए, यदि ch एक कोटिंग तत्व है, तो [[.ch।]] एक नियमित अभिव्यक्ति है जो इस कोटिंग तत्व से मेल खाती है, जबकि [ch] एक नियमित अभिव्यक्ति है जो सी या एच से मेल खाती है।

समानता वर्ग

समकक्ष वर्ग समकक्ष वर्णों की सूची के लिए एक लोकेल-विशिष्ट नाम है। नाम [= और =] में संलग्न है। उदाहरण के लिए, नाम का उपयोग सभी ``, '' `` '' '' 'और' `e` 'के प्रतिनिधित्व के लिए किया जा सकता है।' इस मामले में, [[= e =]] एक नियमित अभिव्यक्ति है किसी भी , ई ' , या ई' से मेल खाता है।

गैर-अंग्रेजी भाषी लोकेशंस में ये सुविधाएं बहुत मूल्यवान हैं। लाइब्रेरी फ़ंक्शंस जो गॉक नियमित अभिव्यक्ति मिलान के लिए उपयोग करता है वर्तमान में केवल POSIX वर्ण वर्गों को पहचानता है; वे कोटिंग प्रतीक या समकक्ष वर्गों को पहचान नहीं पाते हैं।

\ Y , \ B , \ < , \> , \ w , \ W , \ ` , और \ ' ऑपरेटर गॉक के लिए विशिष्ट हैं; वे जीएनयू नियमित अभिव्यक्ति पुस्तकालयों में सुविधाओं के आधार पर एक्सटेंशन हैं।

विभिन्न कमांड लाइन विकल्प नियंत्रित करते हैं कि कैसे गॉक नियमित अभिव्यक्तियों में अक्षरों को व्याख्या करता है।

कोई विकल्प नहीं

डिफ़ॉल्ट मामले में, गॉक ऊपर वर्णित POSIX नियमित अभिव्यक्तियों और जीएनयू नियमित अभिव्यक्ति ऑपरेटरों की सभी सुविधाएं प्रदान करता है। हालांकि, अंतराल अभिव्यक्ति समर्थित नहीं हैं।

--posix

केवल POSIX नियमित अभिव्यक्ति समर्थित हैं, जीएनयू ऑपरेटर विशेष नहीं हैं। (उदाहरण के लिए, \ w एक शाब्दिक डब्ल्यू से मेल खाता है)। अंतराल अभिव्यक्तियों की अनुमति है।

--traditional

पारंपरिक यूनिक्स awk नियमित अभिव्यक्ति मिलान कर रहे हैं। जीएनयू ऑपरेटर विशेष नहीं हैं, अंतराल अभिव्यक्ति उपलब्ध नहीं हैं, और न ही पॉज़िक्स चरित्र वर्ग ( [[: alnum:]] और इसी तरह हैं)। ऑक्टल और हेक्साडेसिमल एस्केप अनुक्रमों द्वारा वर्णित वर्णों का शाब्दिक रूप से व्यवहार किया जाता है, भले ही वे नियमित अभिव्यक्ति मेटाएक्टैक्टर्स का प्रतिनिधित्व करते हैं।

--re अंतराल

नियमित अभिव्यक्तियों में अंतराल अभिव्यक्तियों को अनुमति दें, भले ही - पारंपरिक प्रदान किया गया हो।

क्रिया

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

ऑपरेटर्स

घटती प्राथमिकता के क्रम में एडब्ल्यूके में ऑपरेटर हैं

( ... )

समूहीकरण

$

फील्ड संदर्भ।

++ -

वृद्धि और कमी, दोनों उपसर्ग और पोस्टफिक्स।

^

एक्सपोनेंटिएशन ( ** का उपयोग भी किया जा सकता है, और ** = असाइनमेंट ऑपरेटर के लिए)।

+ -!

यूनरी प्लस, यूनरी माइनस, और तार्किक अस्वीकृति।

* /%

गुणा, विभाजन, और मॉड्यूलस।

+ -

जोड़ और घटाव।

अंतरिक्ष

स्ट्रिंग concatenation।

<>

<=> =

! = == नियमित संबंध ऑपरेटर।

~! ~

नियमित अभिव्यक्ति मैच, अस्वीकृत मैच। नोट: ~ या ! ~ के बाईं ओर एक निरंतर नियमित अभिव्यक्ति ( / foo / ) का उपयोग न करें। केवल दाईं ओर एक का उपयोग करें। अभिव्यक्ति / foo / ~ exp का अर्थ समान है (($ 0 ~ / foo /) ~ exp ) । यह आम तौर पर इरादा नहीं था।

में

ऐरे सदस्यता।

&&

तार्किक और।

||

तार्किक या।

?:

सी सशर्त अभिव्यक्ति। यह प्रपत्र expr1 है ? expr2 : expr3 । यदि expr1 सत्य है, अभिव्यक्ति का मान expr2 है , अन्यथा यह expr3 हैExpr2 और expr3 में से केवल एक का मूल्यांकन किया जाता है।

= + = - =

* = / =% = ^ = असाइनमेंट। पूर्ण असाइनमेंट ( var = value ) और ऑपरेटर-असाइनमेंट (अन्य रूप) दोनों समर्थित हैं।

नियंत्रण वक्तव्य

नियंत्रण कथन निम्नानुसार हैं:

अगर ( शर्त ) कथन [ अन्य कथन ] जबकि ( शर्त ) कथन ( शर्त ) ( expr1 ; expr2 ; expr3 ) कथन के लिए कथन करता है ( सरणी में var ) कथन ब्रेक जारी रखें सरणी [ अनुक्रमणिका ] सरणी निकास [ अभिव्यक्ति ] हटाएं { बयान }

आई / ओ स्टेटमेंट्स

इनपुट / आउटपुट स्टेटमेंट निम्नानुसार हैं:

बंद करें ( फ़ाइल [ , कैसे ] )

फ़ाइल, पाइप या सह-प्रक्रिया बंद करें। एक सह-प्रक्रिया में दो-तरफा पाइप के एक छोर को बंद करते समय वैकल्पिक का उपयोग कैसे किया जाना चाहिए। यह एक स्ट्रिंग मान होना चाहिए, या तो "से" या "से" होना चाहिए।

लाइन में आओ

अगले इनपुट रिकॉर्ड से $ 0 सेट करें; एनएफ , एनआर , एफएनआर सेट करें।

गेटलाइन < फाइल

फ़ाइल के अगले रिकॉर्ड से $ 0 सेट करें; एनएफ सेट करें।

गेटलाइन var

अगले इनपुट रिकॉर्ड से var सेट करें; एनआर , एफएनआर सेट करें।

गेटलाइन var < फ़ाइल

फ़ाइल के अगले रिकॉर्ड से var सेट करें।

कमांड | गेटलाइन [ var ]

उपरोक्त के रूप में उत्पादन को $ 0 या var में आउटपुट पाइप चलाएं।

कमांड | और गेटलाइन [ var ]

उपरोक्त के रूप में उत्पादन को $ 0 या var में आउटपुट को सह-प्रक्रिया के रूप में चलाएं। सह-प्रक्रियाएं एक गॉक एक्सटेंशन हैं।

आगामी

वर्तमान इनपुट रिकॉर्ड को संसाधित करना बंद करो। अगला इनपुट रिकॉर्ड एडब्ल्यूके कार्यक्रम में पहले पैटर्न के साथ पढ़ा जाता है और प्रसंस्करण शुरू होता है। यदि इनपुट डेटा का अंत तक पहुंच जाता है, तो END ब्लॉक (यदि), यदि कोई हो, निष्पादित किया जाता है।

nextfile

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

छाप

वर्तमान रिकॉर्ड मुद्रित करता है। आउटपुट रिकॉर्ड ओआरएस वैरिएबल के मान के साथ समाप्त हो जाता है।

प्रिंट expr-list

प्रिंट्स अभिव्यक्तियाँ। प्रत्येक अभिव्यक्ति को ओएफएस चर के मान से अलग किया जाता है। आउटपुट रिकॉर्ड ओआरएस वैरिएबल के मान के साथ समाप्त हो जाता है।

प्रिंट expr-list > फ़ाइल

फ़ाइल पर अभिव्यक्ति मुद्रित करता है । प्रत्येक अभिव्यक्ति को ओएफएस चर के मान से अलग किया जाता है। आउटपुट रिकॉर्ड ओआरएस वैरिएबल के मान के साथ समाप्त हो जाता है।

printf एफएमटी, expr-list

प्रारूप और प्रिंट करें।

printf fmt, expr-list > फ़ाइल

फ़ाइल पर प्रारूप और प्रिंट करें।

प्रणाली ( सेमीडी-लाइन )

कमांड cmd-line निष्पादित करें , और निकास स्थिति वापस करें। (यह गैर-पॉज़िक्स सिस्टम पर उपलब्ध नहीं हो सकता है।)

एफएफएलश ( [ फाइल ] )

खुली आउटपुट फ़ाइल या पाइप फ़ाइल से जुड़े किसी भी बफर को फ्लश करें। अगर फ़ाइल गुम है, तो मानक आउटपुट फ्लश किया जाता है। अगर फ़ाइल नल स्ट्रिंग है, तो सभी खुली आउटपुट फाइलें और पाइपों में उनके बफर फ्लेश होते हैं।

प्रिंट और प्रिंटफ के लिए अतिरिक्त आउटपुट रीडायरेक्शन की अनुमति है।

प्रिंट ... >> फाइल

फ़ाइल में आउटपुट संलग्न करता है

प्रिंट ... | आदेश

एक पाइप पर लिखता है।

प्रिंट ... | और कमांड

एक सह प्रक्रिया में डेटा भेजता है।

गेटलाइन कमांड फ़ाइल के अंत में 0 और त्रुटि पर -1 देता है। एक त्रुटि पर, ERRNO में समस्या का वर्णन करने वाली स्ट्रिंग होती है।

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

प्रिंटफ स्टेटमेंट

Printf कथन और sprintf () फ़ंक्शन के AWK संस्करण (नीचे देखें) निम्न रूपांतरण विनिर्देश प्रारूप स्वीकार करते हैं:

%सी

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

% डी , % i

एक दशमलव संख्या (पूर्णांक भाग)।

% ई,% ई

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

% च

फॉर्म की एक फ़्लोटिंग पॉइंट संख्या [-] ddd.dddddd

% जी,% जी

% E या % f रूपांतरण का उपयोग करें, जो भी छोटा हो, नॉनसिग्निफिशेंट ज़ीरोस दबाए रखें। % जी प्रारूप % ई के बजाय % E का उपयोग करता है।

% ओ

एक हस्ताक्षरित ऑक्टल संख्या (एक पूर्णांक भी)।

% u एक हस्ताक्षरित दशमलव संख्या (फिर से, एक पूर्णांक)।

% s

एक चरित्र स्ट्रिंग।

% एक्स,% एक्स

एक हस्ताक्षरित हेक्साडेसिमल संख्या (एक पूर्णांक)। % एक्स प्रारूप abcdef के बजाय एबीसीडीईएफ का उपयोग करता है।

%%

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

वैकल्पिक, अतिरिक्त पैरामीटर % और नियंत्रण पत्र के बीच हो सकते हैं:

$ गिनती

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

-

अभिव्यक्ति को अपने क्षेत्र में छोड़ दिया जाना चाहिए।

अंतरिक्ष

संख्यात्मक रूपांतरणों के लिए, एक स्थान के साथ सकारात्मक मानों को पूर्ववत करें, और शून्य मान के साथ नकारात्मक मान।

+

प्लस साइन, चौड़ाई संशोधक (नीचे देखें) से पहले उपयोग किया जाता है, हमेशा संख्यात्मक रूपांतरणों के लिए एक संकेत प्रदान करने के लिए कहता है, भले ही डेटा स्वरूपित किया गया हो, सकारात्मक है। + अंतरिक्ष संशोधक ओवरराइड करता है।

#

कुछ नियंत्रण अक्षरों के लिए 'वैकल्पिक रूप' 'का प्रयोग करें। % O के लिए , एक अग्रणी शून्य की आपूर्ति करें। % X और % X के लिए , nonzero परिणाम के लिए एक अग्रणी 0x या 0X की आपूर्ति करें। % ई , % ई , और % f के लिए , परिणाम में हमेशा एक दशमलव बिंदु होता है। % जी , और % जी के लिए , परिणाम से शून्य शून्य पीछे नहीं हटाए जाते हैं।

0

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

चौड़ाई

क्षेत्र को इस चौड़ाई में गद्देदार होना चाहिए। क्षेत्र आमतौर पर रिक्त स्थान के साथ गद्देदार है। यदि 0 ध्वज का उपयोग किया गया है, तो यह शून्य के साथ गद्देदार है।

prec

एक संख्या जो मुद्रण करते समय उपयोग करने के लिए सटीकता निर्दिष्ट करती है। % E , % E , और % f प्रारूपों के लिए, यह दशमलव बिंदु के दाईं ओर मुद्रित अंकों की संख्या निर्दिष्ट करता है। % जी , और % जी प्रारूपों के लिए, यह महत्वपूर्ण अंकों की अधिकतम संख्या निर्दिष्ट करता है। % D , % o , % i , % u , % x , और % x स्वरूपों के लिए, यह मुद्रित करने के लिए अंकों की न्यूनतम संख्या निर्दिष्ट करता है। % S के लिए , यह स्ट्रिंग से वर्णों की अधिकतम संख्या निर्दिष्ट करता है जिसे मुद्रित किया जाना चाहिए।

एएनएसआई सी printf () दिनचर्या की गतिशील चौड़ाई और सटीक क्षमताओं का समर्थन किया जाता है। ए * या तो चौड़ाई या सटीक विनिर्देशों के स्थान पर उनके मूल्यों को तर्क सूची से printf या sprintf () में ले जाया जाता है। एक गतिशील चौड़ाई या परिशुद्धता के साथ एक स्थितित्मक विनिर्देश का उपयोग करने के लिए, प्रारूप स्ट्रिंग में * के बाद $ गिनती की आपूर्ति करें। उदाहरण के लिए, "% 3 $ * 2 $। * 1 $ s"

विशेष फ़ाइल नाम

किसी फ़ाइल में प्रिंट या प्रिंटफ से I / O पुनर्निर्देशन करते समय, या फ़ाइल से गेटलाइन के माध्यम से, गॉक आंतरिक रूप से कुछ विशेष फ़ाइल नामों को पहचानता है। ये फ़ाइल नाम गॉक की मूल प्रक्रिया (आमतौर पर खोल) से विरासत में खोले गए फ़ाइल डिस्क्रिप्टर तक पहुंच की अनुमति देते हैं। डेटा फ़ाइलों को नाम देने के लिए इन फ़ाइल नामों को कमांड लाइन पर भी इस्तेमाल किया जा सकता है। फ़ाइल नाम हैं:

/ dev / stdin

मानक इनपुट।

/ dev / stdout

मानक उत्पादन।

/ dev / stderr

मानक त्रुटि आउटपुट।

/ dev / fd / n

खुली फ़ाइल डिस्क्रिप्टर एन से जुड़ी फाइल।

ये त्रुटि संदेशों के लिए विशेष रूप से उपयोगी हैं। उदाहरण के लिए:

प्रिंट करें "आपने इसे उड़ा दिया!" > "/ dev / stderr"

जबकि आपको अन्यथा उपयोग करना होगा

प्रिंट करें "आपने इसे उड़ा दिया!" | "बिल्ली 1> और 2"

टीसीपी / आईपी नेटवर्क कनेक्शन बनाने के लिए निम्नलिखित विशेष फ़ाइल नामों का उपयोग | & सह-प्रोसेस ऑपरेटर के साथ किया जा सकता है।

/ inet / tcp / lport / rhost / rport

रिमोट पोर्ट रपोर्ट पर रिमोट होस्ट रोड पर स्थानीय पोर्ट लपोर्ट पर टीसीपी / आईपी कनेक्शन के लिए फ़ाइल। सिस्टम को बंदरगाह चुनने के लिए 0 का बंदरगाह का उपयोग करें।

/ inet / udp / lport / rhost / rport

इसी तरह, लेकिन टीसीपी / आईपी के बजाय यूडीपी / आईपी ​​का उपयोग करें।

/ inet / कच्चे / lport / rhost / rport

भविष्य उपयोग के लिए आरक्षित।

अन्य विशेष फ़ाइल नाम चलने वाले गॉक प्रक्रिया के बारे में जानकारी तक पहुंच प्रदान करते हैं। ये फ़ाइल नाम अब अप्रचलित हैं। उनके द्वारा प्रदान की जाने वाली जानकारी प्राप्त करने के लिए PROCINFO सरणी का उपयोग करें। फ़ाइल नाम हैं:

/ dev / पीआईडी

इस फ़ाइल को पढ़ने से वर्तमान प्रक्रिया की प्रक्रिया आईडी, दशमलव में, एक नई लाइन के साथ समाप्त हो जाती है।

/ dev / ppid

इस फ़ाइल को पढ़ने से वर्तमान प्रक्रिया की मूल प्रक्रिया आईडी, दशमलव में, एक नई लाइन के साथ समाप्त हो जाती है।

/ dev / pgrpid

इस फ़ाइल को पढ़ने से वर्तमान प्रक्रिया की प्रक्रिया समूह आईडी, दशमलव में, एक नई लाइन के साथ समाप्त हो जाती है।

/ dev / उपयोगकर्ता

इस फ़ाइल को पढ़ने से एक नई लाइन के साथ समाप्त एक रिकॉर्ड लौटाता है। खेतों को रिक्त स्थान से अलग किया जाता है। $ 1 getuid (2) सिस्टम कॉल का मान है, $ 2 geteuid (2) सिस्टम कॉल का मान है, $ 3 getgid (2) सिस्टम कॉल का मान है, और $ 4 getegid (2) का मान है सिस्टम कॉल यदि कोई अतिरिक्त फ़ील्ड हैं, तो वे समूह समूह (2) द्वारा लौटाए गए समूह आईडी हैं। कई समूहों को सभी सिस्टम पर समर्थित नहीं किया जा सकता है।

संख्यात्मक कार्य

एडब्ल्यूके में निम्नलिखित अंतर्निहित अंकगणितीय कार्य हैं:

atan2 ( वाई , एक्स )

रेडियंस में y / x के आर्कटैंजेंट को वापस करता है।

कॉस ( expr )

Expr की कोसाइन देता है, जो रेडियंस में है।

एक्सपी ( एक्सपीआर )

घातीय कार्य।

int ( expr )

पूर्णांक के लिए truncates।

लॉग ( expr )

प्राकृतिक लघुगणक समारोह।

रैंड ()

0 और 1 के बीच एक यादृच्छिक संख्या देता है।

पाप ( expr )

Expr की साइन लौटाता है, जो रेडियंस में है।

sqrt ( expr )

वर्ग रूट समारोह।

srand ( [ expr ] )

यादृच्छिक संख्या जनरेटर के लिए एक नए बीज के रूप में expr का उपयोग करता है। यदि कोई expr प्रदान नहीं किया जाता है, तो दिन का समय उपयोग किया जाता है। वापसी मूल्य यादृच्छिक संख्या जेनरेटर के लिए पिछले बीज है।

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

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

asort ( एस [ , डी ] )

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

गैन्सब ( आर , एस , एच [ , टी ] )

नियमित अभिव्यक्ति आर के मैचों के लिए लक्ष्य स्ट्रिंग टी खोजें। यदि एच जी या जी के साथ शुरू होने वाली स्ट्रिंग है, तो आर के सभी मैचों को एस के साथ बदलें। अन्यथा, एच एक संख्या है जो दर्शाती है कि आर के किस मैच को प्रतिस्थापित किया जाए। यदि टी आपूर्ति नहीं की जाती है, तो इसके बजाय $ 0 का उपयोग किया जाता है। प्रतिस्थापन पाठ के भीतर, अनुक्रम \ n , जहां n 1 से 9 तक का अंक है, का उपयोग केवल उस पाठ को इंगित करने के लिए किया जा सकता है जो n 'th parenthesized subexpression से मेल खाता है। अनुक्रम \ 0 पूरे मिलान किए गए पाठ का प्रतिनिधित्व करता है, जैसा चरित्र और करता है। उप () और gsub () के विपरीत, संशोधित स्ट्रिंग फ़ंक्शन के परिणाम के रूप में लौटा दी जाती है, और मूल लक्ष्य स्ट्रिंग नहीं बदली जाती है।

जीएसयूबी ( आर , एस [ , टी ] )

स्ट्रिंग टी में नियमित अभिव्यक्ति आर से मेल खाने वाले प्रत्येक सबस्ट्रिंग के लिए, स्ट्रिंग एस को प्रतिस्थापित करें, और प्रतिस्थापन की संख्या वापस करें। यदि टी आपूर्ति नहीं की जाती है, तो $ 0 का उपयोग करें। प्रतिस्थापन टेक्स्ट में एक और उस पाठ के साथ प्रतिस्थापित किया गया है जो वास्तव में मेल खाता था। एक शाब्दिक और प्राप्त करने के लिए \ & उपयोग करें। (इसे "\\ &" के रूप में टाइप किया जाना चाहिए; GAWK देखें : उप () , gsub () , और gensub () के प्रतिस्थापन पाठ में &s और बैकस्लाश के नियमों की पूर्ण चर्चा के लिए प्रभावी एडब्ल्यूके प्रोग्रामिंग ।)

सूचकांक ( एस , टी )

स्ट्रिंग एस में स्ट्रिंग टी की अनुक्रमणिका देता है, या 0 यदि टी मौजूद नहीं है। (इसका तात्पर्य है कि चरित्र सूचकांक एक से शुरू होता है।)

लंबाई ( [ एस ] )

स्ट्रिंग एस की लंबाई देता है , या यदि 0 की आपूर्ति नहीं की जाती है तो $ 0 की लंबाई देता है।

मैच ( एस , आर [ , ] )

उस स्थिति को वापस करता है जहां नियमित अभिव्यक्ति आर होती है, या 0 यदि आर मौजूद नहीं है, और RSTART और RLENGTH के मान सेट करता है। ध्यान दें कि तर्क आदेश ~ ऑपरेटर के लिए समान है: str ~ re । यदि सरणी प्रदान की जाती है, तो एक साफ़ कर दिया जाता है और फिर 1 से n तत्वों को एस के भाग से भर दिया जाता है जो आर में संबंधित संश्लेषित उप-संपीड़न से मेल खाते हैं। किसी के 0'एच तत्व में संपूर्ण नियमित अभिव्यक्ति आर द्वारा मिलान किए गए हिस्से का हिस्सा होता है।

विभाजन ( एस , एक [ , आर ] )

स्ट्रिंग एस को सरणी में नियमित अभिव्यक्ति आर पर विभाजित करता है, और फ़ील्ड की संख्या देता है। यदि आर छोड़ा जाता है, तो इसके बजाए एफएस का उपयोग किया जाता है। सरणी को पहले साफ़ किया जाता है। विभाजन ऊपर वर्णित क्षेत्र विभाजन के समान व्यवहार करता है।

sprintf ( एफएमटी , expr-list )

Fmt के अनुसार expr-list मुद्रित करता है , और परिणामस्वरूप स्ट्रिंग देता है।

स्ट्रटनम ( str )

Str की जांच करता है, और इसके अंकीय मूल्य देता है। यदि str अग्रणी 0 के साथ शुरू होता है, तो स्ट्रटनम () मानता है कि str एक ऑक्टल संख्या है। यदि str अग्रणी 0x या 0X के साथ शुरू होता है, तो स्ट्रटनम () मानता है कि str एक हेक्साडेसिमल संख्या है।

उप ( आर , एस [ , टी ] )

बस gsub () की तरह, लेकिन केवल पहले मिलान करने वाले सबस्ट्रिंग को प्रतिस्थापित किया गया है।

सबस्ट्रेट ( एस , मैं [ , एन ] )

I से शुरू होने वाले सबसे n -character substring पर वापस आता है। यदि एन छोड़ा जाता है, तो बाकी का उपयोग किया जाता है।

टोलॉवर ( स्ट्र )

स्ट्रिंग स्ट्र की एक प्रति लौटाता है, जिसमें सभी ऊपरी-केस वर्णों को उनके संबंधित लो-केस समकक्षों में अनुवादित किया जाता है। गैर वर्णमाला वर्ण अपरिवर्तित छोड़ दिया जाता है।

टॉपर ( स्ट्र )

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

समय कार्य

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

एमकेटाइम ( डेटपेक )

Systime () द्वारा लौटाए गए एक ही रूप के समय के टिकट में दिनांक दिनांकडेटपेक फॉर्म YYYY एमएम डीडी एचएच एमएम एसएस [डीएसटी] की एक स्ट्रिंग है। स्ट्रिंग की सामग्री छह या सात संख्या क्रमशः पूर्ण वर्ष का प्रतिनिधित्व करती है जिसमें शताब्दी, 1 से 12 महीने का महीना, महीने का दिन 1 से 31 तक, दिन का समय 0 से 23 तक, 0 से मिनट तक 59, और दूसरा 0 से 60 तक, और एक वैकल्पिक डेलाइट सेविंग फ्लैग। इन संख्याओं के मान निर्दिष्ट सीमाओं के भीतर नहीं होना चाहिए; उदाहरण के लिए, मध्यरात्रि से 1 घंटे पहले -1 घंटे का मतलब है। मूल-शून्य ग्रेगोरियन कैलेंडर माना जाता है, वर्ष 0 से पहले वर्ष 1 और वर्ष -1 वर्ष से पहले 0. समय स्थानीय समय क्षेत्र में माना जाता है। यदि डेलाइट सेविंग फ्लैग सकारात्मक है, तो समय को डेलाइट सेविंग टाइम माना जाता है; यदि शून्य है, तो समय मानक समय माना जाता है; और यदि ऋणात्मक (डिफ़ॉल्ट), mktime () यह निर्धारित करने का प्रयास करता है कि निर्दिष्ट समय के लिए डेलाइट सेविंग टाइम प्रभावी है या नहीं। यदि तिथियों में पर्याप्त तत्व नहीं हैं या परिणामस्वरूप समय सीमा से बाहर है, तो mktime () रिटर्न -1।

strftime ( [ प्रारूप [ , टाइमस्टैम्प ]] )

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

systime ()

एपोक (1 980-01-01 00:00:00 पीओएसईक्स सिस्टम पर यूटीसी) के बाद सेकंड की संख्या के रूप में दिन का वर्तमान समय देता है।

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

गॉक के संस्करण 3.1 से शुरू होने पर, निम्नलिखित बिट मैनिपुलेशन फ़ंक्शन उपलब्ध हैं। वे डबल-परिशुद्धता फ्लोटिंग पॉइंट मानों को बिना हस्ताक्षरित लंबे पूर्णांक में परिवर्तित करके, ऑपरेशन कर रहे हैं, और फिर परिणाम को वापस फ़्लोटिंग पॉइंट में परिवर्तित करके काम करते हैं। कार्य हैं:

और ( v1 , v2 )

V1 और v2 द्वारा प्रदान किए गए मानों की बिटवाई और वापसी करें।

शिकायत ( वैल )

वैल के bitwise पूरक वापसी।

lshift ( वैल , गिनती )

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

या ( v1 , v2 )

Bitwise या v1 और v2 द्वारा प्रदान किए गए मानों को वापस करें।

rshift ( वैल , गिनती )

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

xor ( v1 , v2 )

V1 और v2 द्वारा प्रदान किए गए मानों के bitwise XOR को वापस करें।

अंतर्राष्ट्रीयकरण कार्य

गॉक के संस्करण 3.1 से शुरू होने पर, रन-टाइम पर स्ट्रिंग्स का अनुवाद करने के लिए आपके एडब्ल्यूके प्रोग्राम के भीतर से निम्नलिखित फ़ंक्शंस का उपयोग किया जा सकता है। पूर्ण विवरण के लिए, GAWK देखें : प्रभावी एडब्ल्यूके प्रोग्रामिंग

bindtextdomain ( निर्देशिका [ , डोमेन ] )

निर्देशिका को निर्दिष्ट करता है जहां gawk .mo फ़ाइलों को देखता है, अगर वे `मानक 'स्थानों में नहीं रखे जा सकते हैं (उदाहरण के लिए, परीक्षण के दौरान)। यह निर्देशिका देता है जहां डोमेन `` बाध्य है। ''

डिफ़ॉल्ट डोमेन TEXTDOMAIN का मान है। यदि निर्देशिका शून्य स्ट्रिंग ( "" ) है, तो bindtextdomain () दिए गए डोमेन के लिए वर्तमान बाध्यकारी देता है।

dcgettext ( स्ट्रिंग [ , डोमेन [ , श्रेणी ]] )

लोकेल श्रेणी श्रेणी के लिए टेक्स्ट डोमेन डोमेन में स्ट्रिंग का अनुवाद देता है। डोमेन के लिए डिफ़ॉल्ट मान TEXTDOMAIN का वर्तमान मान है। श्रेणी के लिए डिफ़ॉल्ट मान "LC_MESSAGES" है

यदि आप श्रेणी के लिए मूल्य प्रदान करते हैं, तो यह GAWK में वर्णित ज्ञात लोकेल श्रेणियों में से एक के बराबर एक स्ट्रिंग होना चाहिए : प्रभावी एडब्ल्यूके प्रोग्रामिंग । आपको एक टेक्स्ट डोमेन भी प्रदान करना होगा। यदि आप वर्तमान डोमेन का उपयोग करना चाहते हैं तो TEXTDOMAIN का उपयोग करें।

dcngettext (स्ट्रिंग 1 , स्ट्रिंग 2 , संख्या [ , डोमेन [ , श्रेणी ]] )

लोकेल श्रेणी श्रेणी के लिए टेक्स्ट डोमेन डोमेन में string1 और string2 के अनुवाद की संख्या के लिए उपयोग किए गए बहुवचन रूप को वापस करता है। डोमेन के लिए डिफ़ॉल्ट मान TEXTDOMAIN का वर्तमान मान है। श्रेणी के लिए डिफ़ॉल्ट मान "LC_MESSAGES" है

यदि आप श्रेणी के लिए मूल्य प्रदान करते हैं, तो यह GAWK में वर्णित ज्ञात लोकेल श्रेणियों में से एक के बराबर एक स्ट्रिंग होना चाहिए : प्रभावी एडब्ल्यूके प्रोग्रामिंग । आपको एक टेक्स्ट डोमेन भी प्रदान करना होगा। यदि आप वर्तमान डोमेन का उपयोग करना चाहते हैं तो TEXTDOMAIN का उपयोग करें।

उपयोगकर्ता द्वारा परिभाषित समारोह

एडब्ल्यूके में कार्य निम्नानुसार परिभाषित किए गए हैं:

कार्य का नाम ( पैरामीटर सूची ) { कथन }

फ़ंक्शंस निष्पादित होते हैं जब उन्हें पैटर्न या क्रियाओं में अभिव्यक्तियों के भीतर से बुलाया जाता है। फ़ंक्शन कॉल में दी गई वास्तविक पैरामीटर का उपयोग फ़ंक्शन में घोषित औपचारिक पैरामीटर को तुरंत चालू करने के लिए किया जाता है। Arrays संदर्भ द्वारा पारित कर रहे हैं, अन्य चर मूल्य से पारित कर रहे हैं।

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

फ़ंक्शन एफ (पी, क्यू, ए, बी) # ए और बी स्थानीय हैं {...} / एबीसी / {...; एफ (1, 2); ...}

फ़ंक्शन कॉल में बाएं कोष्ठक को बिना किसी हस्तक्षेप वाली सफेद स्पेस के फ़ंक्शन नाम का तुरंत पालन करना आवश्यक है। यह concatenation ऑपरेटर के साथ एक वाक्य रचनात्मक अस्पष्टता से बचने के लिए है। यह प्रतिबंध ऊपर सूचीबद्ध अंतर्निहित कार्यों पर लागू नहीं होता है।

कार्य एक-दूसरे को कॉल कर सकते हैं और रिकर्सिव हो सकते हैं। स्थानीय चर के रूप में उपयोग किए जाने वाले फ़ंक्शन पैरामीटर को नल स्ट्रिंग में प्रारंभ किया गया है और फ़ंक्शन आमंत्रण पर संख्या शून्य है।

फ़ंक्शन से मूल्य वापस करने के लिए वापसी expr का उपयोग करें। यदि कोई मूल्य प्रदान नहीं किया जाता है, या यदि फ़ंक्शन अंत में 'गिरने' से वापस लौटाता है तो वापसी मूल्य अनिर्धारित होता है।

यदि - लिंट प्रदान किया गया है, तो गॉक रन समय के बजाए पार्स टाइम पर अपरिभाषित कार्यों को कॉल के बारे में चेतावनी देता है। रन टाइम पर एक अपरिभाषित फ़ंक्शन को कॉल करना एक घातक त्रुटि है।

फ़ंक्शन के स्थान पर func शब्द का उपयोग किया जा सकता है।

नैदानिक ​​रूप से नए कार्यों को लोड करना

गॉक के संस्करण 3.1 के साथ शुरुआत करते हुए, आप चल रहे गॉक दुभाषिया को गतिशील रूप से नए अंतर्निहित फ़ंक्शंस जोड़ सकते हैं। पूरा विवरण इस मैनुअल पेज के दायरे से बाहर है; GAWK देखें : विवरण के लिए प्रभावी एडब्ल्यूके प्रोग्रामिंग

विस्तार ( वस्तु , कार्य )

ऑब्जेक्ट द्वारा नामित साझा ऑब्जेक्ट फ़ाइल को गतिशील रूप से लिंक करें, और प्रारंभ करने के लिए उस ऑब्जेक्ट में फ़ंक्शन का आह्वान करें। इन दोनों को स्ट्रिंग के रूप में प्रदान किया जाना चाहिए। फ़ंक्शन द्वारा लौटाए गए मान को वापस कर देता है

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

सिग्नल

pgawk दो सिग्नल स्वीकार करता है। SIGUSR1 प्रोफ़ाइल प्रोफाइल में प्रोफ़ाइल और फ़ंक्शन कॉल स्टैक को डंप करने का कारण बनता है, जो या तो awkprof.out है , या जो भी फ़ाइल --profile विकल्प के साथ नामित किया गया था। यह फिर चलना जारी है। SIGHUP प्रोफ़ाइल और फ़ंक्शन कॉल स्टैक को डंप करने और फिर बाहर निकलने का कारण बनता है।

उदाहरण

सभी उपयोगकर्ताओं के लॉगिन नाम प्रिंट करें और क्रमबद्ध करें: BEGIN {FS = ":"} {प्रिंट $ 1 | "सॉर्ट करें"} फ़ाइल में गिनती लाइनें: {nlines ++} END {print nlines} फ़ाइल में अपनी संख्या से प्रत्येक पंक्ति से पहले: {प्रिंट एफएनआर, $ 0} Concatenate और लाइन नंबर (थीम पर एक भिन्नता): {प्रिंट एनआर, $ 0}

internalization

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

गॉक 'BEGIN {प्रिंट "हैलो, दुनिया"}'

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

गॉक 'BEGIN {प्रिंट _ "हैलो, दुनिया"}'

फ्रांस में bonjour, monde प्रिंट कर सकते हैं।

स्थानीयकरण योग्य एडब्ल्यूके कार्यक्रम बनाने और चलाने में कई कदम शामिल हैं।

1।

टेक्स्ट प्रोग्राम को अपने प्रोग्राम से जुड़े नाम पर सेट करने के लिए TEXTDOMAIN चर के लिए मान असाइन करने के लिए एक BEGIN कार्रवाई जोड़ें।


BEGIN {TEXTDOMAIN = "myprog"}

यह आपके कार्यक्रम से जुड़े .mo फ़ाइल को खोजने के लिए गॉक को अनुमति देता है। इस चरण के बिना, गॉक संदेश टेक्स्ट डोमेन का उपयोग करता है, जिसमें संभवतः आपके प्रोग्राम के लिए अनुवाद नहीं होते हैं।

2।

उन सभी तारों को चिह्नित करें जिन्हें प्रमुख अंडरस्कोर के साथ अनुवादित किया जाना चाहिए।

3।

यदि आवश्यक हो, तो उचित रूप से अपने प्रोग्राम में dcgettext () और / या bindtextdomain () फ़ंक्शंस का उपयोग करें।

4।

अपने कार्यक्रम के लिए एक .po फ़ाइल उत्पन्न करने के लिए gawk --gen-po -f myprog.awk> myprog.po चलाएं

5।

उपयुक्त अनुवाद प्रदान करें, और एक संबंधित .mo फ़ाइल का निर्माण और स्थापित करें।

अंतर्राष्ट्रीयकरण सुविधाओं का वर्णन GAWK में पूर्ण विस्तार से किया गया है: प्रभावी एडब्ल्यूके प्रोग्रामिंग

Posix संगतता

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

पुस्तक इंगित करती है कि कमांड लाइन वैरिएबल असाइनमेंट तब होता है जब awk अन्यथा एक फ़ाइल के रूप में तर्क खोलता है, जो BEGIN ब्लॉक निष्पादित होने के बाद होता है। हालांकि, पहले के कार्यान्वयन में, जब कोई असाइनमेंट किसी फ़ाइल नाम से पहले दिखाई देता था, तो BEGIN ब्लॉक चलने से पहले असाइनमेंट होगा। एप्लिकेशन इस 'फीचर' पर निर्भर होने के लिए आए थे। 'जब अपने दस्तावेज़ से मेल खाने के लिए अजीब बदल दिया गया था, पुराने व्यवहार पर निर्भर अनुप्रयोगों को समायोजित करने के लिए कार्यक्रम निष्पादन से पहले चर निर्दिष्ट करने के लिए -v विकल्प जोड़ा गया था। (यह सुविधा बेल प्रयोगशालाओं और जीएनयू डेवलपर्स दोनों द्वारा सहमत थी।)

कार्यान्वयन विशिष्ट विशेषताओं के लिए -W विकल्प POSIX मानक से है।

तर्कों को संसाधित करते समय, गॉक तर्क के अंत को सिग्नल करने के लिए विशेष विकल्प `` - '' का उपयोग करता है। संगतता मोड में, यह चेतावनी देता है लेकिन अन्यथा अपरिभाषित विकल्पों को अनदेखा करता है। सामान्य ऑपरेशन में, इस तरह के तर्क प्रक्रिया के लिए एडब्ल्यूके कार्यक्रम को पास किए जाते हैं।

एडब्ल्यूके पुस्तक srand () के वापसी मूल्य को परिभाषित नहीं करती है। POSIX मानक ने यादृच्छिक संख्या अनुक्रमों को ट्रैक रखने की अनुमति देने के लिए इसका उपयोग कर रहे बीज को वापस कर दिया है। इसलिए गर्व में srand () भी अपने वर्तमान बीज लौटाता है।

अन्य नई विशेषताएं हैं: एकाधिक- एफ विकल्पों का उपयोग (एमकेएस अजीब से ); ENVIRON सरणी; \ a , और \ v भागने के दृश्य (मूल रूप से गॉक में किया गया और बेल प्रयोगशाला संस्करण में वापस खिलाया गया); टॉल्वर () और टॉपर () अंतर्निहित फ़ंक्शंस (बेल प्रयोगशालाओं संस्करण से); और printf में एएनएसआई सी रूपांतरण विनिर्देश (बेल प्रयोगशालाओं संस्करण में पहले किया गया)।

ऐतिहासिक विशेषताएं

ऐतिहासिक एडब्ल्यूके कार्यान्वयन की दो विशेषताएं हैं जो गॉक का समर्थन करती हैं। सबसे पहले, लम्बाई () अंतर्निर्मित फ़ंक्शन को न केवल तर्क के साथ कॉल करना संभव है, लेकिन बिना ब्रांड्स के भी! इस प्रकार,

ए = लंबाई # पवित्र अल्गोल 60, बैटमैन!

इनमें से एक जैसा ही है

ए = लंबाई ()
ए = लंबाई ($ 0)

इस सुविधा को POSIX मानक में `` बहिष्कृत 'के रूप में चिह्नित किया गया है, और गॉक इसके उपयोग के बारे में चेतावनी जारी करता है यदि कमांड लाइन पर --lint निर्दिष्ट है।

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

जीएनयू एक्सटेंशन

गॉक के पास पॉज़िक्स अजीब में कई एक्सटेंशन हैं। वे इस खंड में वर्णित हैं। यहां वर्णित सभी एक्सटेंशन - पारंपरिक विकल्प के साथ गॉक का आह्वान करके अक्षम किया जा सकता है।

गॉस्क की निम्नलिखित विशेषताएं POSIX awk में उपलब्ध नहीं हैं।

*

-f विकल्प के माध्यम से नामित फ़ाइलों के लिए कोई पथ खोज नहीं की जाती है। इसलिए AWKPATH पर्यावरण चर विशेष नहीं है।

*

\ X भागने अनुक्रम। ( --posix के साथ अक्षम।)

*

Fflush () फ़ंक्शन। ( --posix के साथ अक्षम।)

*

लाइनों को जारी रखने की क्षमता ? और :। ( --posix के साथ अक्षम।)

*

एडब्ल्यूके कार्यक्रमों में ऑक्टल और हेक्साडेसिमल स्थिरांक।

*

ARGIND , BINMODE , ERRNO , LINT , RT और TEXTDOMAIN चर विशेष नहीं हैं।

*

IGNORECASE चर और इसके दुष्प्रभाव उपलब्ध नहीं हैं।

*

FIELDWIDTHS चर और निश्चित चौड़ाई क्षेत्र विभाजन।

*

PROCINFO सरणी उपलब्ध नहीं है।

*

एक नियमित अभिव्यक्ति के रूप में आरएस का उपयोग।

*

I / O पुनर्निर्देशन के लिए उपलब्ध विशेष फ़ाइल नाम पहचाने नहीं गए हैं।

*

सह-प्रक्रिया बनाने के लिए | और ऑपरेटर।

*

नल स्ट्रिंग का उपयोग एफएस के मूल्य के रूप में अलग-अलग वर्णों को विभाजित करने की क्षमता, और विभाजित करने के लिए तीसरे तर्क के रूप में ()

*

बंद () फ़ंक्शन के लिए वैकल्पिक दूसरा तर्क।

*

मिलान () फ़ंक्शन के लिए वैकल्पिक तीसरा तर्क।

*

Printf और sprintf () के साथ स्थितित्मक विनिर्देशों का उपयोग करने की क्षमता।

*

सरणी की पूरी सामग्री को हटाने के लिए हटाएं सरणी का उपयोग।

*

वर्तमान इनपुट फ़ाइल की प्रसंस्करण को त्यागने के लिए अगली फ़ाइल का उपयोग।

*

और () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , या () , rshift () , strftime () , strtonum () , systime () और xor () फ़ंक्शंस।

*

स्थानीयकरण तार।

*

विस्तार () फ़ंक्शन के साथ गतिशील रूप से नए अंतर्निहित फ़ंक्शंस जोड़ना।

एडब्ल्यूके पुस्तक निकट () फ़ंक्शन के रिटर्न वैल्यू को परिभाषित नहीं करती है। गॉक का करीबी () क्रमशः आउटपुट फ़ाइल या पाइप को बंद करते समय, फ्लेक्ज़ (3), या पीक्लोज़ (3) से मान देता है। इनपुट पाइप बंद करते समय यह प्रक्रिया की निकास स्थिति लौटाता है। वापसी मूल्य -1 है यदि नामित फ़ाइल, पाइप या सह-प्रक्रिया पुनर्निर्देशन के साथ खोला नहीं गया था।

जब गॉक को - पारंपरिक विकल्प के साथ बुलाया जाता है, यदि एफ विकल्प के लिए fs तर्क '`t' 'है, तो FS टैब वर्ण पर सेट है। ध्यान दें कि गॉक-एफ \ टी टाइप करना ... केवल खोल को 'टी', '' उद्धृत करने का कारण बनता है, और -फ विकल्प में `` \ t '' पास नहीं करता है। चूंकि यह एक बदसूरत विशेष मामला है, यह डिफ़ॉल्ट व्यवहार नहीं है। यह व्यवहार तब भी नहीं होता है जब --posix निर्दिष्ट किया गया है। क्षेत्र विभाजक के रूप में वास्तव में एक टैब वर्ण प्राप्त करने के लिए, सिंगल कोट्स का उपयोग करना सबसे अच्छा है: gawk -F '\ t' ...।

अन्य आदेश देखें : प्रतीक्षा करें , एलपी , पूर्ण , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , स्वैपॉन , autofs , talk , motd , free , lpr , execl , fdisk , पर , कौन , iwconfig , ifconfig , vgdisplay , खुला , lsmod , ntohs , mailq , मार , wtmp