Linux-AWK/C2/Built-in-Variables-in-awk/Marathi

From Script | Spoken-Tutorial
Revision as of 16:14, 26 March 2019 by Ranjana (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time
Narration
00:01 awk built-in variables आणि awk script वरील स्पोकन ट्युटोरिअलमध्ये आपले स्वागत आहे.
00:07 ह्या ट्युटोरिअलमध्ये आपण शिकणार आहोत - Built-in variables , awk script
00:14 आपण काही उदाहरणांद्वारे हे करू.
00:17 हे ट्युटोरिअल रेकॉर्ड करण्यासाठी मी वापरत आहे - Ubuntu Linux 16.04 Operating System आणि gedit text editor 3.20.1
00:30 ह्या ट्युटोरिअलमध्ये वापरलेल्या फाईल्स ह्या ट्युटोरिअल पृष्ठावरील Code Files लिंकमध्ये उपलब्ध आहेत. कृपया डाऊनलोड करा आणि त्यांचा वापर करा.
00:40 ह्या ट्युटोरिलअच्या सरावासाठी, आपण ह्या वेबसाईटवर पूर्वीचे awktutorials पहा.
00:47 नसल्यास, कृपया ह्या वेबसाईटवरील संबंधित ट्युटोरिअल्स पहा.
00:52 प्रथम, awk मधील काही built-in variables पाहू.
00:57 कॅपिटल RS हे input फाईलमध्ये record separator निर्दिष्ट करते. डिफॉल्टपणे हेnewline आहे.
01:07 कॅपिटल FS हे input फाईलमध्ये field separator निर्दिष्ट करते.
01:13 डीफॉल्टपणे, FS ची व्हॅल्यू ही whitespace आहे.
01:18 कॅपिटल ORS हे output record separator परिभाषित करते.

डिफॉल्टपणे हे newlineआहे.

01:27 कॅपिटल OFS हे output field separator परिभाषित करते.

डीफॉल्टपणे, हे whitespaceआहे.

01:36 यांपैकी प्रत्येकाचा अर्थ समजून घेऊ.
01:40 आता awkdemo फाईलवर नजर टाकू.
01:44 जेव्हा आपण awkdemo फाईल awk कमांडसह प्रक्रिया(प्रोसेस) करीत असतो, तेव्हा ही आपली input फाईल बनते.
01:51 लक्षात ठेवा की, सर्व नोंदी(रेकॉर्ड्स) एकमेकांपासून newline characterद्वारे विभक्त आहेत.
01:58 record separator RS variable साठी newline हे डीफॉल्ट व्हॅल्यू आहे.

म्हणून, अन्य काहीही करण्याची गरज नाही.

02:08 लक्षात घ्या की, सर्व फिल्ड्स pipe symbol ने विभक्त केले आहेत.

आपण awk ला त्याबद्दल कसे कळवू शकतो? चला पाहू.

02:18 डिफॉल्टपणे, spaces किंवा tabs ची कोणतीही संख्या फिल्ड्सना वेगळे करतात.
02:24 आपण पूर्वीच्या ट्युटोरिअलमध्ये शिकल्याप्रमाणे आपण hyphen capital F पर्यायाच्या सहाय्याने हे रीसेट करू शकतो.
02:33 अन्यथा, आपण FS व्हेरिएबल वापरून BEGIN section मध्ये हे रीसेट करू शकतो.
02:40 समजा, मला अशा विद्यार्थ्याचे नाव शोधायचे आहे ज्याला 5000 रुपयांपेक्षा जास्त स्टायपेंड मिळत आहे.
02:51 CTRL, ALT आणि T कीज दाबून terminal उघडा.
02:57 आपण cd command वापरून Code Files डाऊनलोड आणि एक्सट्रॅक्ट केलेल्या फोल्डरवर जा.
03:04 येथे दर्शविल्याप्रमाणे कमांड टाईप करा.
03:08 येथे BEGIN सेक्शनमध्ये आपण FS लाpipe symbolम्हणून व्हॅल्यू दिले आहे.

त्याचप्रमाणे आपण RS variable बदलू शकतो.

03:19 कमांड कार्यान्वित करण्यासाठी Enter दाबा.
03:23 आऊटपुट ज्यांना 5000 रुपयांपेक्षा जास्त स्टायपेंड म्हणून मिळत आहे अशा विद्यार्थ्यांची सूची दाखवित आहे.
03:30 येथे name फील्ड आणि stipend फिल्ड एका रिक्त space ने विभक्त केले आहे.
03:36 तसेच, सर्व रेकॉर्ड्स newline character ने विभक्त केले आहेत.
03:42 समजा आपल्याला output field separator म्हणून colon हवे आहे.

आणि output record separator म्हणून डबल newline .

03:52 आपण हे कसे करू शकतो? चला पाहू.
03:55 terminal मध्ये, आधी एक्सिक्यूट केलेली कमांड मिळवण्यासाठी up arrow की दाबा.
04:01 येथे दर्शविल्याप्रमाणे कमांड सुधारित करा. आणि नंतर Enter दाबा.
04:08 आपल्याला अपेक्षित स्वरूपात आऊटपुट मिळेल.
04:12 आता समजा, आपली नवीन इनपुट फाईल आहे sample.txt.
04:18 बारकाईने पहा की field separator इथे newline आणि record separator डबल newline'आहे.
04:27 आपण ह्या फाईलमधून रोल नंबर आणि नावाची माहिती कशी काढू शकतो?
04:32 होय, आपण अचूक अंदाज केला आहे. आपल्याला FS आणि RS हे variables दोन्ही सुधारित(मोडिफाय)करायचे आहेत.
04:39 हे ट्युटोरिअल थांबवा आणि असाईनमेंट म्हणून हे करा.
04:43 पुढे आपण अन्य built-in variables. पाहू.
04:47 कॅपिटल NR हे awk द्वारे प्रोसेसने Number of Records देते
04:53 सध्याच्या रेकॉर्डमध्ये कॅपिटल NF ही Number of Fields देते.
04:59 ह्यावरील एक उदाहरण पाहू.

समजा, आपल्याला फाईलमध्ये अर्धवट ओळी शोधायच्या आहेत.

05:07 येथे अर्धवट ओळ म्हणजे ती नॉर्मल(सामान्य) 6 फिल्ड्सपेक्षा कमी आहे.
05:13 terminalवर जा. Ctrl आणि Lकीज वापरून मी टर्मिनल क्लिअर करते.
05:20 दर्शविल्याप्रमाणे कमांड टाईप करा.
05:24 pipe चिन्हाद्वारे फिल्ड्स विभक्त केल्यामुळे, BEGIN section मध्ये pipe चिह्नासाठी FS व्हॅल्यू सेट करा.
05:33 पुढे आपण लिहिले आहे -NF not equal to 6.
05:37 हे वर्तमान ओळीतील फिल्ड्सची संख्या 6 च्या समान आहे की नाही हे तपासते.
05:43 ट्रू असल्यास, $0 ने दर्शविलेल्या संपूर्ण ओळीसह print section रेकॉर्ड्सची लाईन नंबर NR प्रिन्ट करेल. Enter दाबा.
05:55 आऊटपुटमध्ये आपण पाहू शकतो की, 16 हा अपूर्ण रेकॉर्ड आहे.

त्याच्याकडे 6 ऐवजी केवळ 5 fields आहेत.

06:05 आणखी एक उदाहरण पाहू.

किती fields आहेत त्याकडे दुर्लक्ष करून, आपण प्रत्येक विद्यार्थ्यासाठी पहिले आणि शेवटचे field कसे प्रिंट करू शकतो?

06:16 येथे terminal वर दर्शविल्याप्रमाणे कमांड टाईप करा.
06:21 येथे आपण FS variable सेट करण्याऐवजी hyphen capital F हा पर्याय वापरला आहे.

Enterदाबा.

06:30 फाईलमध्ये प्रत्येक रेकॉर्डसाठी आपल्याला फक्त पहिले आणि शेवटचे fields मिळतात.
06:36 आता काहीतरी आणखी प्रयत्न करू.
06:39 समजा, विद्यार्थी रेकॉर्ड्स दोन फाईल्समध्ये वितरीत केले जातात demo1.txt, demo2.txt.
06:48 आपल्याला ह्या दोन फाईल्समधील प्रत्येकीमधून पहिल्या 3 ओळी प्रिंट करायच्या आहेत.

आपण हे NR variable वापरून करू शकतो.

06:57 येथे दोन फाईल्सचे कंटेंट्स आहेत.
07:02 आता प्रत्येक फाईलमधून पहिल्या 3 ओळी दाखवण्यासाठी, terminal वर खालील कमांड टाईप करा.
07:11 Enter दाबा.
07:13 आऊटपुट demo1.txt फाईलच्या केवळ पहिले 3 रेकॉर्ड्स दर्शवितो.
07:20 दुसऱ्या फाईलसाठी आपण तेच कसे प्रिंट करू शकतो ?
07:24 NRच्या ऐवजी FNR वापरणे हा उपाय आहे.

वर्तमान फाईलमध्ये FNR हा current record number आहे.

07:34 प्रत्येक वेळी नवीन रेकॉर्ड वाचल्यानंतर FNR वाढविले जाते.
07:39 नवीन इनपुट फाईल सुरू होताना प्रत्येक वेळी शून्य वर रीइनिशिअलाइज्ड केला जातो.
07:46 परंतु NR हे इनपुट रेकॉर्ड awk ची संख्या आहे जी प्रोग्रॅमच्या अंमलबजावणीच्या सुरूवातीपासूनच

प्रक्रिया केली गेली आहे.

07:55 नवीन फाईलसह ते शून्यावर रीसेट केले जात नाही.
07:59 terminal वर जा.

आधी एक्झिक्यूट केलेले कमांड मिळविण्यासाठी up arrow की दाबा.

08:06 आधीचे कमांड खालीलप्रमाणे सुधारित करा.

NR च्या ऐवजी FNR टाईप करा.

08:14 Print section मध्ये NR च्या पुढे FNR टाईप करा. Enter दाबा.
08:21 पहा, आता आपल्याला योग्य आऊटपुट मिळते.

FNR नवीन फाईलसह झिरोवर सेट आहे परंतु NR वाढत जाते.

08:31 आता आपण इतर built-in variables पाहू.

FILENAME व्हेरिएबल फाईलचे नाव देते जी वाचत आहे.

08:40 ARGC ही command line वर दिलेल्या arguments संख्या निर्दिष्ट करते.
08:46 ARGV array दर्शवते जे command line arguments स्टोअर करते.
08:52 ENVIRON shell environment variables चे array आणि संबंधित व्हॅल्यूज निर्दिष्ट करते.
09:00 ARGV आणि ENVIRON हे awk' मध्ये' array वापरतात, आपण पुढच्या ट्युटोरिअलमध्ये ते पाहू.
09:09 आता FILENAME वर नजर टाकू.

प्रोसिडमध्ये असलेल्या वर्तमान फाईलचे नाव आपण कसे प्रिंट करू शकतो?

09:18 terminal वर जा आणि दाखवल्याप्रमाणे कमांड टाईप करा.
09:23 येथे आपण space म्हणून एक स्ट्रिंग कनकॅटनेशन ऑपरेटर वापरला आहे.

कमांड एक्झिक्यूट करण्यासाठी Enter दाबा.

09:32 आऊटपुट input filename अनेक वेळा दर्शवितो.
09:37 ह्याचे कारण असे की, हा कमांड awkdemo.txt फाईलमधील प्रत्येक रोसाठी एकदा फाईलनेम प्रिंट करतो.

आपण हे केवळ एकदाच कसे प्रिंट करू शकतो?

09:48 terminal क्लिअर करा.

आधी एक्झिक्यूट केलेले कमांड मिळविण्यासाठी up arrow की दाबा.

09:55 येथे दर्शविल्याप्रमाणे मागील कमांड सुधारित करा.

Enter दाबा.

10:02 आता, आपल्याला फक्त एकदाच फाईलनेम मिळते.
10:06 awk' मध्ये तिथे काही built-in variables आहेत.

कृपया त्यांच्याविषयी अधिक जाणून घेण्यासाठी इंटरनेट ब्राऊझ करा.

10:14 समजा, आपल्याला उत्तीर्ण झालेली आणि रु. 8000 पेक्षा जास्त स्टायपेंड मिळवणारी मुले शोधायची आहेत.
10:22 output field separator म्हणून comma वापरा आणि “The data is shown for file” आणि footer section मधील फाईलचे नाव प्रिंट करा.

आपण हे कसे करू शकतो?

10:36 terminal मध्ये खालील कमांड टाईप करा.

Enter दाबा.

10:43 आपण पाहू शकतो की फक्त एक विद्यार्थी पास झाला आहे आणि त्याला 8000 रुपयांपेक्षा जास्त स्टायपेंड मिळते. आणि रेकॉर्ड नंबर आहे 2.
10:53 इच्छेनुसार, आपण footer मध्ये फाईलचे नावदेखील पाहू शकतो.
10:58 आपण अधिकाधिक गुंतागुंतीच्या कार्यांसाठी awk वापरू शकतो.
11:03 त्या बाबतीत, terminal वर प्रत्येकवेळी commands लिहिणे खूप कठिण होत होते.
11:09 आपण त्याऐवजी वेगळ्या फाईलमध्ये awk प्रोग्राम लिहू शकतो.
11:14 कार्यान्वित करण्यासाठी, त्या फाईलला dot awk एक्स्टेंशन असावे.
11:19 एक्झिक्यूटींग करताना, आपण हे awk प्रोग्राम फाईलनेम awk command सह निर्दिष्ट करू शकतो.
11:26 असे करण्यासाठी, आपल्याला hyphen small f पर्याय वापरण्याची आवश्यकता आहे.

एक उदाहरण पाहू.

11:35 मी आधीच awk प्रोग्राम लिहीत आहे आणि त्यास prog1 dot awk म्हणून सेव्ह केले आहे.
11:42 हा कोड Code Files लिंकमध्येदेखील उपलब्ध आहे.
11:46 terminal वर जा.

single quotes च्या आत शेवटी एक्सिक्यूट केलेल्या command मध्ये आपण काय लिहिले आहे ते पहा.

11:55 prog1.awk चा कंटेन्ट अगदी सारखा आहे.
12:00 फक्त फरक म्हणजे awk फाईलमध्ये, आपण single quotes च्या आत लिहिले नाही.
12:07 फाईल एक्सिक्यूट करण्यासाठी, terminal वर खालील टाईप करा -

awk space hyphen small f space prog1.awk space awkdemo.txt आणि Enterदाबा.

12:24 आपण आधी पाहिले होते त्याप्रमाणे आपल्याला तेच आऊटपुट मिळत आहे.
12:29 तर, अशाप्रकारे तुम्ही awk प्रोग्राम्स लिहू शकता आणि अनेकदा तो वापरू शकता.
12:35 ह्यासह आपण ट्युटोरिअलच्या समाप्तीकडे आलोत.

आता सारांशित करूया.

12:40 ह्या ट्युटोरिअलमध्ये आपण शिकलो - विविध उदाहरणे वापरून Built-in variables.

awk script

12:48 असाईनमेंट म्हणून- awkdemo.txt फाईलमधील 5व्या ओळीच्या शेवटच्या फिल्डची प्रिंट काढण्यासाठी awk स्क्रिप्ट लिहा.
12:58 terminal वर /etc/passwd सिस्टम फाईल उघडा.
13:05 त्यातील सर्व separators ओळखा.
13:09 20 व्या ओळीपासून पुढे फाईलवर प्रोसेस करण्यासाठी आता script लिहा.
13:15 तेसुद्धा, केवळ 6 फिल्डपेक्षा अधिक असलेल्या ओळींसाठी.
13:20 तुम्ही line number, संपूर्ण ओळ आणि त्या विशिष्ट ओळीतील fields ची संख्या प्रिंट केली पाहिजे.
13:28 खालील लिंकवरील व्हिडिओ स्पोकन ट्युटोरिअल प्रोजेक्टचा सारांश देते.

कृपया डाऊनलोड करून पहा.

13:36 स्पोकन ट्युटोरिअल प्रोजेक्ट टीम स्पोकन टयूटोरिअलच्या सहाय्याने कार्यशाळा चालवते आणि प्रमाणपत्रे देते.

अधिक माहितीसाठी, कृपया आम्हांला लिहा.

13:47 कृपया ह्या फोरममध्ये आपले कालबद्ध प्रश्न पोस्ट करा.
13:51 "स्पोकन ट्युटोरियल प्रॉजेक्ट" ला अर्थसहाय्य National Mission on Education through ICT, MHRD, Government of India यांच्याकडून मिळालेले आहे.

ह्या मिशनवरील अधिक माहिती ह्या लिंकवर उपलब्ध आहे.

14:03 आय.आय.टी. बॉम्बे तर्फे मी रंजना उके आपली रजा घेते. सहभागासाठी धन्यवाद.

Contributors and Content Editors

Ranjana