जानें कैसे निर्मित चर का उपयोग करने के लिए चर - भाग 10


जैसा कि हम Awk सुविधाओं के अनुभाग को उजागर करते हैं, श्रृंखला के इस भाग में, हम Awk में निर्मित चर की अवधारणा के माध्यम से चलेंगे। दो प्रकार के चर हैं जिन्हें आप अक्क में उपयोग कर सकते हैं, ये हैं; उपयोगकर्ता-परिभाषित चर, जिसे हमने भाग 8 में शामिल किया है और अंतर्निहित चर हैं।

अंतर्निहित वैरिएबल में पहले से ही ऑक में परिभाषित मूल्य हैं, लेकिन हम उन मानों को भी सावधानी से बदल सकते हैं, जिनमें अंतर्निहित वैरिएबल शामिल हैं:

  1. FILENAME : वर्तमान इनपुट फ़ाइल नाम (चर नाम न बदलें)
  2. FR : वर्तमान इनपुट लाइन की संख्या (जो इनपुट लाइन 1, 2, 3 है ... इत्यादि, चर नाम न बदलें)
  3. NF : वर्तमान इनपुट लाइन में फ़ील्ड्स की संख्या (चर का नाम न बदलें)
  4. OFS : आउटपुट फ़ील्ड विभाजक
  5. FS : इनपुट क्षेत्र विभाजक
  6. ORS : आउटपुट रिकॉर्ड विभाजक
  7. RS : इनपुट रिकॉर्ड विभाजक

आइए हम ऊपर निर्मित चर में से कुछ का उपयोग करने के लिए आगे बढ़ें:

वर्तमान इनपुट फ़ाइल का फ़ाइल नाम पढ़ने के लिए, आप FILENAME अंतर्निहित चर का उपयोग कर सकते हैं:

$ awk ' { print FILENAME } ' ~/domains.txt 

आपको एहसास होगा कि, फ़ाइल नाम प्रत्येक इनपुट लाइन के लिए प्रिंट किया गया है, जो कि जब आप FILENAME अंतर्निहित वैरिएबल का उपयोग करते हैं तो Awk का डिफ़ॉल्ट व्यवहार होता है।

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

जब हम बिल्ली के आदेश का उपयोग करके फ़ाइल domain.txt को देखते हैं, तो इसमें पाठ के साथ 14 लाइनें और खाली 2 लाइनें होती हैं:

$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

किसी रिकॉर्ड या पंक्ति में फ़ील्ड की संख्या की गणना करने के लिए, हम निम्नानुसार एनआर निर्मित चर का उपयोग करते हैं:

$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

इसके बाद, आप FS बिल्ट-इन वैरिएबल का उपयोग करके एक इनपुट फील्ड सेपरेटर भी निर्दिष्ट कर सकते हैं, यह परिभाषित करता है कि कैसे Awk इनपुट लाइनों को खेतों में विभाजित करता है।

FS के लिए डिफ़ॉल्ट मान स्थान और टैब है, लेकिन हम FS के मूल्य को किसी भी वर्ण में बदल सकते हैं जो Awk को तदनुसार इनपुट लाइनों को विभाजित करने का निर्देश देगा।

ऐसा करने के लिए दो तरीके हैं:

  1. एक विधि FS निर्मित चर का उपयोग करना है
  2. और दूसरा -F Aw विकल्प
  3. को लागू करना है

लिनक्स सिस्टम पर फ़ाइल/etc/passwd पर विचार करें, इस फ़ाइल में फ़ील्ड : वर्ण का उपयोग करके विभाजित हैं, इसलिए हम इसे नए इनपुट फ़ील्ड विभाजक के रूप में निर्दिष्ट कर सकते हैं जब हम कुछ फ़ील्ड फ़िल्टर करना चाहते हैं। निम्नलिखित उदाहरणों में:

हम निम्नानुसार -F विकल्प का उपयोग कर सकते हैं:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

वैकल्पिक रूप से, हम नीचे दिए गए FS अंतर्निहित चर का भी लाभ उठा सकते हैं:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

आउटपुट फ़ील्ड विभाजक निर्दिष्ट करने के लिए, OFS अंतर्निहित वैरिएबल का उपयोग करें, यह परिभाषित करता है कि आउटपुट फ़ील्ड को उस वर्ण का उपयोग करके अलग किया जाएगा जिसका उपयोग हम नीचे दिए गए उदाहरण में करते हैं:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

इस भाग 10 में, हमने Awk निर्मित चर का उपयोग करने के विचार का पता लगाया है जो पूर्वनिर्धारित मूल्यों के साथ आते हैं। लेकिन हम इन मूल्यों को भी बदल सकते हैं, हालांकि, ऐसा करने की अनुशंसा नहीं की जाती है जब तक कि आप यह नहीं जानते कि आप क्या कर रहे हैं, पर्याप्त समझ के साथ।

इसके बाद, हम यह कवर करने के लिए प्रगति करेंगे कि कैसे हम Awk कमांड ऑपरेशन में शेल चर का उपयोग कर सकते हैं, इसलिए, Tecmint से जुड़े रहें।