Linux-AWK/C2/Built-in-Variables-in-awk/Marathi
|
|
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 | आय.आय.टी. बॉम्बे तर्फे मी रंजना उके आपली रजा घेते. सहभागासाठी धन्यवाद. |