Linux-AWK/C2/MultiDimensional-Array-in-awk/Sanskrit

From Script | Spoken-Tutorial
Jump to: navigation, search
Time
Narration
00:01 MultiDimensional Array in awk इति पाठार्थं भवद्भ्यः स्वागतम् ।
00:07 पाठेऽस्मिन् वयम् –

awkमध्ये, 'मल्टि डैमेन्शनल् अरे' इत्यस्य रचना अपि च तस्य स्केन् करणम् च ज्ञास्यामः ।

00:18 इदं कैश्चन उदाहरणैः सह करिष्यामः ।
00:21 पाठमिदं रेकोर्ड् कर्तुमहम्  :

Ubuntu Linux 16.04 ओपरेटिङ्ग् सिस्टम् अपि च gedit टेक्स्ट् एडितर् 3.20.1 इतीमे उपयुनज्मि ।

00:33 भवतामभीष्टानुसारेण यत्किमपि टेक्स्ट्-एडिटर् उपयोक्तुमर्हन्ति भवन्तः ।
00:37 पाठस्यास्य अभ्यासाय भवन्तः, अस्माकं जालपुटे array विषयकानि पूर्वतन awk ट्युटोरियल्स् पश्येयुः ।
00:45 भवद्भ्यः C अथवा C++ सदृशानां प्रोग्रामिङ्ग्-भाषाज्ञानमावश्यकम् ।
00:52 नास्ति चेत् , अस्माकं जालपुटस्थानि तत्सम्बद्धानि ट्युटोरियल्स् पश्यन्तु ।
00:58 अत्रोपयुक्ताः सञ्चिकाः, अस्मिन्नेव पृष्टे Code Files लिङ्क् मध्ये लभ्याः सन्ति ।

कृपया ताः अवचित्य extract कुर्वन्तु ।

01:08 awk मध्ये, 'मल्टि डैमेन्शनल् अरे' (multidimensional array) नाम किम्?
01:12 'सिङ्गल् डैमेन्शनल् अरेस्' मध्ये, 'अरे एलिमेण्ट्' इतीदं एकेनैव इण्डेक्स् द्वारा अभिजानाति, इति ज्ञातवन्तः वयं पूर्वम् ।
01:19 उदाहरणार्थं, अरे week इतीदं, dayइति इण्डेक्स् द्वारा अभिजानीमः ।
01:26 परन्तु 'मल्टि डैमेन्शनल् अरे' मध्ये, एलिमेण्ट् इतीदं नाना इण्डेक्स् सेक्वेन्स् द्वारा अभिज्ञायते ।
01:34 उदाहरणार्थं, टु-डैमेन्शनल्-अरे मध्ये, एलिमेण्ट् इतीदं द्वे इण्डेक्स् सीक्वेन्स् द्वारा अभिज्ञायते ।
01:42 अत्र, बहूनि इण्डेक्स् इतीमानि, तेषां मध्ये सपरेटर् इत्यनेन सह, एकस्मिन् 'स्ट्रिङ्ग्' मध्ये संयोजितानि । (concatenated).
01:50 सपरेटर् इतीदं, बिल्ट् इन् वेरियेबल् SUBSEP इत्यस्य मूल्यमस्ति ।
01:55 सरलाय, वन्-डैमेन्शनल्-अरे इत्यस्मै , संयोजितं स्ट्रिङ्ग् इतीदं एकैव इण्डेक्स् रूपेण उपयुञ्ज्महे ।
02:01 उदाहरणार्थं वयम् multi within square brackets 4 comma 6 equal to value, in double quotes इति लिखामः इति कल्पयाम ।
02:11 अत्र, 'multi' – इतीदं 'मल्टि डैमेन्शनल् अरे' इत्यस्य नाम अस्ति ।

'4' अपि च '6' इमे सङ्ख्ये 'स्ट्रिङ्ग्' इत्यस्मै परिवर्तिते ।

02:21 SUBSEP इत्यस मूल्यं हेश्-चिह्नम् (#) अस्तीति वदाम ।
02:26 तदा ताः सङ्ख्याः, तासां मध्ये 'हेश्-चिह्न(#)' द्वारा संयुज्यन्ते ।
02:32 अतः अरे एलिमेण्ट्, multi within square brackets within double quotes 4 hash 6 इतीदं, डबल् कोट्स् मध्ये value इत्यस्मै सेट् कृतम् ।
02:43 SUBSEP इत्यस्य डीफ़ोल्ट्-वेल्यू, डबल्-कोट्स् मध्ये backslash 034 इति स्ट्रिङ्ग् वर्तते ।
02:50 वस्तुतः इदं non-printing character वर्तते ।

सामान्यतः इदं बहुषु इन्पुट् डेटा इत्येतेषु न दृश्यते ।

02:58 स्लैड् मध्ये यथा दर्शितं तथा, टु-डैमेन्शनल्-अरे डिक्लेर्-कर्तुं वयं प्रयतामहै ।
03:03 Row 1, 'A' अपि च 'B' इति द्वे एलिमेण्ट्स् प्राप्तवदस्ति ।
03:08 Row 2, 'C ' अपि च 'D' इति द्वे एलिमेण्ट्स् प्राप्तवदस्ति ।
03:12 CTRL, ALT अपि च T कीलकानि नुत्त्वा टर्मिनल् उद्घाटयन्तु ।
03:17 cd कमाण्ड् उपयुज्य, भवन्तः Code Files इतीदं डौन्लोड् तथा extract कृतं फोल्डर् प्रति गच्छन्तु ।
03:24 अधुना 'अरे' इतीदं अधः यथा दर्शितं तथा व्याख्यानं कुर्वन्तु । अत्र दर्शितानि कमाण्ड्स् आदरेण टैप् कुर्वन्तु ।

पश्चात् Enter नुदन्तु ।

03:35 विना दोषैः वयं कमाण्ड्-प्रोम्ट् प्राप्तवन्तः ।

एवं, 'अरे' व्याख्यातम् ।

03:41 कोड् मध्ये, मुद्रापयितुं अस्माभिः न किमपि दत्तम् । अतः वयं फलितं न प्राप्नुमः ।
03:47 वयं प्रिण्ट्-स्टेट्मेण्ट् संयोजयाम ।
03:50 टर्मिनल् मध्ये पूर्वतन कमाण्ड् प्राप्तुम् , 'अप् एरो' कीलकं नुदन्तु ।
03:56 'कर्लि ब्रेकेट्' पिधानात् प्राक् एवं टङ्कयन्तु : semicolon space print space a within square brackets 2 comma 2.

कमाण्ड् एक्सिक्यूट् कर्तुं, Enter नुदन्तु ।

04:13 अवलोक्यतां यत्, वयं फलितं केपिटल् 'D' इति प्राप्नुमः ।
04:18 यस्मिन् कस्मिन्नपि 'मल्टि डैमेन्शनल् अरे' मध्ये, एकं 'इण्डेक्स् सीक्वेन्स्' परीक्षणं कथम्?
04:25 तदर्थं वयं in ओपरेटर् उपयोक्तुं शक्नुमः ।
04:28 अस्मिन् ततौ, इदं पूर्वमेव वयं 'सिङ्गल् डैमेन्शनल् अरे' मध्ये दृष्टवन्तः ।
04:34 वयम् अल्पविरामचिह्नेन पृथक् कृतानाम् इण्डेक्स् इत्येतेषां सम्पूर्णं सीक्वेन्स् इतीदं आवरणे विलिखेम ।
04:42 इदमेकेन उदाहरणेन सह पश्याम ।
04:45 अहं पूर्वमेव test_multi.awk इति स्क्रिप्ट् लिखितवानस्मि ।
04:51 ट्युटोरियल् मध्ये पृष्टस्य Code Files लिङ्क मध्ये इदमुपलभ्यमस्ति ।
04:56 अस्माकं पूर्वतन चर्चायाम् यथा दृष्टं तथाहं 2 by 2 अरे इत्यस्य व्याख्यानं कृतवानस्मि ।
05:02 पश्चादहं, द्वे if कण्डीशन्स् लिखितवानस्मि ।
05:06 प्रथमं if कण्डीशन्, इण्डेक्स् one comma one मध्ये, एलिमेण्ट् अस्ति वा नवेति परीक्षते ।
05:13 वयं 'मल्टि डैमेन्शनल् अरे' इत्यस्मै, इण्डेक्स् इतीदम् आवरणे (parentheses) विलिखेम ।
05:18 कण्डीशन् true अस्ति चेत्, तत् one comma one is present इति मुद्रापयति ।
05:23 न चेत्, तत् one comma one is absent इति मुद्रापयति ।
05:28 एवमेव, इण्डेक्स् three comma one मध्ये एलिमेण्ट्-इत्यस्य अस्तित्वं वयं परीक्षामहे ।

सञ्चिकाम् एक्सिक्यूट् कुर्मः ।

05:36 'टर्मिनल्' आगत्य एवं टङ्कयन्तु  : awk space hyphen small f space test underscore multi dot awk अपि च Enter नुदन्तु ।
05:49 फलितम् : one comma one is present अपि च three comma one is absent इति वदति ।
05:55 अन्यमेकम् उदाहरणं पश्याम ।

अधुना, अस्माकं मेट्रिक्स् इत्यस्य 'ट्रान्स्पोस्' इत्यस्य रचना आवश्यकम् इति वदाम ।

06:02 एकस्य मेट्रिक्स् इत्यस्य 'रोस्' अपि च 'कोलम्स्' इतीमनि व्यतिहरणद्वारा, तस्य 'मेट्रिक्स्' इत्यस्य 'ट्रान्स्पोस्' इतीदं रचयामः ।

वयं तत् कथं कर्तुं शक्नुमः?

06:11 2D-array.txt सञ्चिकायाम्, अहं टु-डैमेन्शनल्-अरे-मेट्रिक्स्(two-dimensional array matrix) इतीदं रचितवानस्मि ।
06:19 अहं transpose.awk इति नाम्नः कोड् लिखितवानस्मि ।
06:24 आदौ, अस्य awk स्क्रिप्ट् इत्यस्य action विभागं पश्यन्तु ।
06:29 अत्र, एकस्मिन् पङ्क्तौ(row), फील्ड्-इत्येतेषां गरिष्ठसङ्ख्यां गणयामः । अपि च इदं मूल्यं max_nf इति वेरियेबल् मध्ये स्टोर्-कृतवन्तः ।
06:40 जानीमः यत्, NRइतीदं, awkइत्यनेन प्रोसेस्-कृतानां रेकोर्ड्-सङ्ख्या अस्ति ।

NR इत्यस्य मूल्यम्, max_nr वेरियेबल् मध्ये स्टोर् कृतवानस्मि ।

06:50 Awk, इन्पुट्-सञ्चिकां प्रथम-रेकोर्ड्-आरभ्य अन्तिम-रेकोर्ड्-पर्यन्तं प्रोसेस् करोति ।
06:56 Awkद्वारा प्रथम-रेकोर्ड् इत्यस्य प्रोसेस्-करणकाले , max_nr 1 भविष्यति ।
07:03 द्वितीय-रेकोर्ड् इत्यस्य प्रोसेस्-करणकाले, max_nr 2 भविष्यति अपि च तदेवं पुनरावर्तते ।
07:11 awkद्वारा अन्तिम-रेकोर्ड् इत्यस्य प्रोसेस्-करणकाले, max_nr सर्वेषां रेकोर्ड्-सङ्ख्यां स्टोर्-करोति ।
07:19 वयमधुना 'इन्पुट् सञ्चिकया' डेटा पठेम । अपि च डेटा इतीदं टु-डैमेन्शनल्-अरे मध्ये स्टोर् भवेत् ।
07:26 for लूप् इत्यस्यान्तः, 'इटरेटर् वेरियेबल् x' वर्तते ।
07:31 x’ एकेन NF पर्यन्तं गमिष्यति । अपि च प्रत्येकस्य इटरेशन् इत्यस्यानन्तरं ‘x’ इतीदं 1 इत्यनेन वर्धयति ।
07:39 x’ इत्यस्य सर्वेभ्यः मूल्येभ्यः, $ x (डोलर् x), फील्ड् ‘x’ मध्ये स्थितं मूल्यं सूचयति ।
07:46 तं मूल्यम्, matrix अरे इत्यस्य NR comma x इण्डेक्स् मध्ये स्टोर् कुर्मः ।
07:53 उदाहरणार्थम्, matrix of 1 comma 1, इन्पुट्-सञ्चिकया इण्डेक्स् 1 comma 1 मध्यस्थं मूल्यं स्टोर् करोति ।
08:02 अतः, awk अनेन कोड्-द्वारा पूर्णा इन्पुट्-सञ्चिका प्रोसेस्-कृते सति matrix अरे, सिद्धं भवति ।
08:10 इदम् 'इन्पुट् सञ्चिकायाः' सर्वाणि डेटा इतीमानि, 'टु डैमेन्शनल् अरे' इत्यस्य फोर्मेट् मध्ये स्टोर् करोति ।
08:16 वयमधुना END विभागस्य अन्तः पश्याम ।
08:20 matrix इत्यस 'ट्रान्स्पोस्' मुद्रापयितुं, वयमेकं 'नेस्टेड् for लूप्' लिखितवन्तः ।
08:25 भवद्भ्यः 'C प्रोग्रमिङ्ग्' ज्ञानमस्तीति मत्त्वा अहं कोड्-इत्यस्य विवरणं विस्तरेण न कृतवान् ।
08:34 कोड्-इतीदं सविवरं दृष्टुं ज्ञातुञ्च विडियो इत्यस्मै अत्रैव विरामं ददतु ।
08:40 अधुना, 'मल्टि डैमेन्शनल् अरे' इत्यस्य स्केन् करणं कथमिति ज्ञास्यामः ।
08:45 परमार्थतः, Awk, 'मल्टि डैमेन्शनल् अरे'-युतं नास्ति ।
08:50 अतः, 'मल्टि डैमेन्शनल् अरे' इतीदं स्केन्-कर्तुं अत्र अन्यं विशिष्टं for स्टेट्मेण्ट् भवितुं नार्हति ।
08:56 अरे इत्यस्य स्केन्-करणाय, भवन्तः 'मल्टि डैमेन्शनल्' क्रमम् उपयोक्तुमर्हन्ति ।
09:00 अतः भवन्तः, for स्टेट्मेण्ट्-इतीदं split() फङ्क्षन्-मध्ये संयोजितुमर्हन्ति ।
09:05 split फङ्क्षन् नाम किम्?

'स्ट्रिङ्ग्' कर्तयितुं अथवा भागद्वयं कर्तुम्,

09:14 अपि च नाना भागान् एकस्मिन् 'अरे'मध्ये स्थापयितुं, split फङ्क्षन् उपयुञ्ज्महे ।
09:18 सिण्टेक्स् एवम् वर्तते -

प्रथमम् 'आर्ग्युमेण्ट्', कर्तनं भूयमानं 'स्ट्रिङ्ग्' युतमस्ति ।

09:25 द्वितीयम् 'आर्ग्युमेण्ट्' 'split() इतीदं, विभक्तान् भागान् स्थाप्यमाणम् 'अरे'नेम् सूचयति ।
09:33 तृतीयम् 'आर्ग्युमेण्ट्' , स्ट्रिङ्ग्-कर्तयितुं उपयुज्यमानं सपरेटर् विषयं विवृणोति ।
09:39 प्रथमः भागः arr 1 ( ए आर् आर् वन्) मध्ये स्टोर् क्रियते ।
09:43 द्वितीयः भागः arr 2 मध्ये, एवम्…
09:48 रचितेन 'अरे'इत्यनेन, अस्माभिः मूलानुक्रमं पुनः प्राप्तव्यं चेत् ; तत् कथं क्रियते ?
09:56 अहं multi_scan.awk इति नाम्नः कोड् लिखितवानस्मि ।
10:02 सम्पूर्णं कोड् इतीदं BEGIN विभागे लिखितम् ।
10:06 पूर्वं वयम् a इति नाम्नः अरे रचितवन्तः । तस्मै मूल्यम् असैन् कृतवन्तः च ।
10:12 पश्चात्, iterator इत्यनेन सह for लूप् प्राप्तवन्तः ।
10:16 सर्वेभ्यः इटरेशन्-अर्थम्, iterator इतीदं प्रत्येकस्मै इण्डेक्स्-वेल्यू-इत्यस्मै सेट् क्रियते । 1,1 पश्चात् 1,2 एवम्…
10:27 split() फङ्क्षन्, 'इटरेटर् ' इतीदं SUBSEP इत्यनेन पृथक्-कृतान् भागान् इव विभाजयति ।
10:34 इमे भागाः arr इति अरे मध्ये स्टोर् क्रियन्ते ।
10:38 अतः, arr[1] अपि च arr[2] क्रमेण प्रथमं द्वितीयञ्च इण्डेक्स् प्राप्येते ।

इमां सञ्चिकाम् एक्सिक्यूट् कुर्मः ।

10:48 'टर्मिनल्' गत्वा एवं टङ्कयन्तु - awk space hyphen small f space multi underscore scan dot awk .

अपि च Enter नुदन्तु ।

11:01 फलितं पश्यन्तु । इण्डेक्स् इत्येतेषां मूलं सीक्वेन्स् पुनः प्राप्तवन्तः स्मः ।
11:07 सङ्क्षेपेण, पाठेऽस्मिन् वयम् -

awk मध्ये, 'मल्टि डैमेन्शनल् अरे' इत्यस्य रचना अपि च तस्य स्केन्-करणं कथमिति ज्ञातवन्तः ।

11:18 एकं पाठनियोजनम् -

'टु डैमेन्शनल् अरे' इतीदं 90डिग्री भ्रामयितुं, भ्रामितं 'मेट्रिक्स्' मुद्रापयितुञ्च एकम् awk स्क्रिप्ट् लिखन्तु ।

11:28 पर्चन्याम् विद्यमानं विडियो, “spoken tutorial” प्रकल्पस्य सारं दर्शयति । तदवचित्य पश्यन्तु ।
11:36 “spoken tutorial” प्रकल्पगणः, इमान् पाठान् उपयुज्य कार्यशालां चालयति । उत्तीर्णेभ्यः प्रमाणपत्रं ददाति ।
11:45 अधिकविवरणार्थम् अस्मभ्यं लिखन्तु ।
11:49 भवतां प्रश्नान् मिनिट् सेकेण्ड् इत्यनयोः सह फोरं मध्ये लिखन्तु ।
11:53 "Spoken Tutorial" प्रकल्पः, NMEICT, MHRD द्वारा भारतसर्वकारस्य अनुदानं प्राप्तवान् अस्ति । अधिकविवरणं अस्यां पर्चन्याम् उपलभ्यते ।
12:05 पाठस्यास्य अनुवादकः प्रवाचकश्च श्री नवीनभट्टः उप्पिनपट्टणम् । धन्यवादाः ।

Contributors and Content Editors

NaveenBhat, Sandhya.np14