Linux-AWK/C2/User-Defined-Functions-in-awk/Oriya

From Script | Spoken-Tutorial
Jump to: navigation, search
Time
Narration
00:01 ବନ୍ଧୁଗଣ, AWK ଥିବା "ୟୁଜର୍ ଡିଫାଇଣ୍ଡ ଫଙ୍କଶନ୍ସ" ଉପରେ ଏହି ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲକୁ ସ୍ୱାଗତ
00:07 ଏହି ଟ୍ୟୁଟୋରିଆଲରେ ଆମେ ଶିଖିବା - "ଫଙ୍କଶନ୍ ଡେଫିନେଶନ୍"ର ସିଣ୍ଟାକ୍ସ

"ଫଙ୍କଶନ୍ କଲ୍” ଓ "ରିଟର୍ନ ଷ୍ଟେଟମେଣ୍ଟ”

00:17 ଏହାକୁ ଆମେ କେତେକ ଉଦାହରଣ ମାଧ୍ୟମରେ କରିବା
00:21 ଏହି ଟ୍ୟୁଟୋରିଆଲ୍ ରେକର୍ଡ କରିବାକୁ ମୁଁ Ubuntu Linux 16.04 OS ଏବଂ Gedit Text Editor 3.20.1 ବ୍ୟବହାର କରୁଛି
00:34 ହେଲେ, ଆପଣ ନିଜ ପସନ୍ଦର Text Editor ବ୍ୟବହାର କରିପାରିବେ
00:38 ଏହି ଟ୍ୟୁଟୋରିଆଲ୍ ଅଭ୍ୟାସ କରିବା ପାଇଁ ଆପଣ, ଏହି ୱେବ୍ ସାଇଟ୍‌ରେ ଥିବା ପୂର୍ବ AWK ଟ୍ୟୁଟୋରିଆଲଗୁଡ଼ିକ ବିଷୟରେ ଜାଣିଥିବା ଦରକାର
00:45 ଆପଣଙ୍କ ପାଖରେ C କିମ୍ୱା C++ ଭଳି ଯେକୌଣସି ପ୍ରୋଗ୍ରାମିଙ୍ଗ୍ ଲାଙ୍ଗୁଏଜ୍‌ର କିଛି ଜ୍ଞାନ ଥିବା ଉଚିତ
00:52 ଯଦି ନାହିଁ, ତେବେ ଆମ ୱେବ୍ ସାଇଟ୍‌ରେ ଥିବା ସମ୍ୱନ୍ଧିତ ଟ୍ୟୁଟୋରିଆଲଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ
00:58 ଏହି ଟ୍ୟୁଟୋରିଆଲ୍ ପେଜ୍‌ରେ ଥିବା Code Files ଲିଙ୍କରେ ଏହି ଟ୍ୟୁଟୋରିଆଲରେ ବ୍ୟବହୃତ ଫାଇଲ୍‌ଗୁଡ଼ିକ ଉପଲବ୍ଧ ଅଛି.

ଦୟାକରି ସେଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରି ଏକ୍ସଟ୍ରାକ୍ଟ କରନ୍ତୁ

01:08 ଏବେ ଚାଲନ୍ତୁ, "ୟୁଜର୍ ଡିଫାଇଣ୍ଡ ଫଙ୍କଶନ୍ସ” ବିଷୟରେ ଶିଖିବା.

"ଫଙ୍କଶନ୍” ସିଣ୍ଟାକ୍ସ ନିମ୍ନରେ ଦିଆଗଲା

01:16 ଏବଂ ସିଣ୍ଟାକ୍ସ ହେଉଛି ସ୍ୱ-ବ୍ୟାଖ୍ୟାତ୍ମକ
01:20 ଏଠାରେ "କୀ’ୱର୍ଡ ଫଙ୍କଶନ୍” ବାଧ୍ୟତାମୂଳକ ଅଟେ
01:24 ଗୋଟିଏ "ଫଙ୍କଶନ୍"କୁ କଲ୍ କରିବା ପାଇଁ, "ଫଙ୍କଶନ୍"ର ନାମ ଏବଂ ତା’ପରେ ପାରାନ୍ଥେସେସ୍‌ରେ "ଆର୍ଗୁମେଣ୍ଟସ୍" ଲେଖନ୍ତୁ
01:31 ଧ୍ୟାନ ଦିଅନ୍ତୁ: "ଫଙ୍କଶନ୍” ନାମ ଏବଂ "ଆର୍ଗୁମେଣ୍ଟ"ର "ଓପନ୍ ପାରାନ୍ଥେସେସ୍” ମଧ୍ୟରେ "ସ୍ପେସ୍"ର ଅନୁମତି ନାହିଁ
01:39 ଏବେ ଆମେ ଗୋଟିଏ ଉଦାହରଣ ଦେଖିବା
01:42 ଆମର awkdemo.txt ଫାଇଲ୍‌ରେ, ଷଷ୍ଠ "ଫିଲ୍ଡ” ଷ୍ଟାଇପେଣ୍ଡକୁ ପ୍ରତିନିଧିତ୍ୱ କରିଥାଏ
01:47 କଳ୍ପନା କରନ୍ତୁ ଯେ, "ଷ୍ଟାଇପେଣ୍ଡ"ରେ ଅବା ଜିରୋ ଅଛି କିମ୍ୱା ଚାରୋଟି "ଡିଜିଟ୍” ରହିଛି
01:54 ମନେକରନ୍ତୁ, ଷ୍ଟାଇପେଣ୍ଡ ହେଉଛି 8900.

ଏହାକୁ ଶବ୍ଦରେ 8 ହଜାର 9 ଶହ ଭାବରେ ପ୍ରିଣ୍ଟ କରନ୍ତୁ

02:03 ଯଦି ଷ୍ଟାଇପେଣ୍ଡ 0 ହୋଇଥାଏ, ତେବେ ଶବ୍ଦରେ "ଜିରୋ” ପ୍ରିଣ୍ଟ କରନ୍ତୁ
02:08 user_function.awk ନାମକ ଏକ ଫାଇଲ୍‌ରେ ମୁଁ ପୂର୍ବରୁ କୋଡ୍ ଲେଖିସାରିଛି.
02:15 ଏଠାରେ ମୁଁ, ଏକ ସିଙ୍ଗଲ୍ "ଆର୍ଗୁମେଣ୍ଟ argval” ସହ changeit ନାମକ ଏକ ଫଙ୍କଶନ୍ ଲେଖିଛି “
02:23 ଏଠାରେ argval ହେଉଛି ମୂଳତଃ ଆମର ଷଷ୍ଠ "ଫିଲ୍ଡ", ଯାହା ହେଉଛି “ଷ୍ଟାଇପେଣ୍ଡ”
02:29 “ଫଙ୍କଶନ୍” ଭିତରେ, argval “Zero” କି ନୁହେଁ, ତାହା ପ୍ରଥମ କୋଡ୍ ଯାଞ୍ଚ କରିବ
02:36 ଯଦି ହଁ, ତେବେ ଏହା ଶବ୍ଦରେ “Zero” ପ୍ରିଣ୍ଟ କରିବ
02:40 ଯଦି ନୁହେଁ, ତେବେ କୋ‌ଡ୍‌ର ଏକ ଭାଗ else, ନିଷ୍ପାଦିତ ହେବ
02:46 else ଭାଗରେ, Substring ଫଙ୍କଶନ୍ ବ୍ୟବହାର କରି ଆମେ ପ୍ରତ୍ୟେକ ଡିଜିଟ୍‌କୁ ଗୋଟିଏ ପରେ ଗୋଟିଏ କରି ଏକ୍ସଟ୍ରାକ୍ଟ କରିବା
02:54 ଏବଂ ଭିନ୍ନ "ଇଣ୍ଡାଇସେସ୍"ଠାରେ "ଆରେ a"ରେ ଭାଲ୍ୟୁଗୁଡ଼ିକୁ ଷ୍ଟୋର୍ କରିବ
03:00 ଉଦାହରଣସ୍ୱରୂପ, a[1] ବାମପଟୁ ପ୍ରଥମ "ଡିଜିଟ୍” କିମ୍ୱା "ହଜାରର ସ୍ଥାନ ଡିଜିଟ୍” ଦେବ
03:08 ଆମ ପାଖରେ କେବଳ ଚାରୋଟି "ଡିଜିଟ୍ ଥିବାରୁ, ମୁଁ ଚାରୋଟି "ଇଣ୍ଡାଇସେସ୍” ବ୍ୟବହାର କରିଛି
03:13 ଏଥିରେ ଆମେ, "ଏଲେମେଣ୍ଟ” ଜିରୋ ସହିତ ସମାନ କି ନୁହେଁ, ଯାଞ୍ଚ କରିବା

ଏବଂ ସେଗୁଡ଼ିକୁ ସଠିକ୍ କ୍ରମରେ ପ୍ରିଣ୍ଟ କରିବା

03:21 ଶେଷରେ, ଆଉଟପୁଟ୍‌ରେ ଏକ ନୂଆ "ଲାଇନ୍ ବ୍ରେକ୍” ଦେବାପାଇଁ ଆମେ, "Backslash n” କ୍ୟାରେକ୍ଟର୍ ପ୍ରିଣ୍ଟ କରିବା
03:28 ତା’ପରେ, awk script ଭିତରେ, ଆମେ "ଡଲର୍ 2” ପ୍ରିଣ୍ଟ କରିଛେ, ଯାହା ହେଉଛି ଦ୍ୱିତୀୟ ଫିଲ୍ଡ, "ନେମ୍"
03:35 ପାରାମିଟର୍ "ଡଲର୍ 6", ଯାହା ହେଉଛି "ଷ୍ଟାଇପେଣ୍ଡ", ତାହା ସହିତ ଆମେ ଫଙ୍କଶନ୍ changeitକୁ କଲ୍ କରିବା.

ଫାଇଲ୍‌କୁ ନିଷ୍ପାଦନ କରନ୍ତୁ

03:43 ଟର୍ମିନଲ୍‌କୁ ଯାଆନ୍ତୁ.

cd କମାଣ୍ଡ ବ୍ୟବହାର କରି Code Files ଡାଉନଲୋଡ୍ ଓ ଏକ୍ସଟ୍ରାକ୍ଟ କରିଥିବା ଫୋଲ୍ଡର୍‌କୁ ଯାଆନ୍ତୁ

03:53 ଏବେ, ନିମ୍ନ କମାଣ୍ଡ ଟାଇପ୍ କରି Enter ଦାବନ୍ତୁ
04:00 ଆମେ, ଆଶାନୁରୂପ ଆଉଟପୁଟ୍ ପାଇବା
04:03 ଏକ "ୟୁଜର୍-ଡିଫାଇଣ୍ଡ ଫଙ୍କଶନ୍” ଗୋଟିଏ "ରିଟର୍ନ ଷ୍ଟେଟମେଣ୍ଟ” ମଧ୍ୟ ଅନ୍ତର୍ଭୁକ୍ତ କରିପାରେ “
04:08 ଏହି "ଷ୍ଟେଟମେଣ୍ଟ", awk ପ୍ରୋଗ୍ରାମ୍ ର "କଲିଙ୍ଗ୍” ଭାଗକୁ "କଣ୍ଟ୍ରୋଲ୍” ରିଟର୍ନ କରିଥାଏ
04:13 ଏହାକୁ, ଅବଶିଷ୍ଟ awk ପ୍ରୋଗ୍ରାମ୍ ରେ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ଭାଲ୍ୟୁ ରିଟର୍ନ କରିବା ପାଇଁ ମଧ୍ୟ ବ୍ୟବହାର କରାଯାଇପାରେ “
04:20 ତାହା, ଏହିଭଳି ଦେଖାଯାଏ: return ସ୍ପେସ୍ expression

ଏଠାରେ, expression ଭାଗ ହେଉଛି ଇଚ୍ଛାଧୀନ

04:29 ଗୋଟିଏ "ଆରେ"ର "average” ରିଟର୍ନ କରିବା ପାଇଁ ଚାଲନ୍ତୁ ଏକ "ଫଙ୍କଶନ୍” ଲେଖିବା
04:34 average.awk ନାମକ ଏକ ଫାଇଲ୍‌ରେ ମୁଁ କୋଡ୍ ଲେଖିସାରିଛି.

ଚାଲନ୍ତୁ କଣ୍ଟେଣ୍ଟକୁ ଦେଖିବା

04:41 ଏହି ଉଦ୍ଦେଶ୍ୟ ପାଇଁ ଆମେ, avg ନାମକ ଏକ ଫଙ୍କଶନ୍‌କୁ ପରିଭାଷିତ କରିଛେ
04:46 ଏଥିରେ ପାଞ୍ଚୋଟି "ପାରାମିଟର୍” ଅଛି.

Arr ହେଉଛି array, ଯେଉଁଥିପାଇଁ average ଗଣନା କରାଯିବ

04:55 i ହେଉଛି array loop veriable
04:58 ସମସ୍ତ "ଆରେ ଏଲେମେଣ୍ଟ”ର "ଯୋଗ” ହେଉଛି sum
05:03 "ଆରେ"ରେ "ଏଲେମେଣ୍ଟସ୍"ର ସଂଖ୍ୟାକୁ n ସୂଚିତ କରିଥାଏ
05:07 ଫଙ୍କଶନ୍ avgରୁ ରିଟର୍ନ କରାଯିବାକୁ ଥିବା "ଭେରିଏବଲ୍"କୁ ret ପ୍ରତିନିଧିତ୍ୱ କରିଥାଏ.

ଗଣନା କରାଯାଇଥିବା averageକୁ ret ଷ୍ଟୋର୍ କରିବ

05:17 i ପୂର୍ବରୁ ଥିବା ଅତିରିକ୍ତ ସ୍ପେସ୍ ସୂଚିତ କରେ ଯେ, ଭେରିଏବଲ୍ i sum, n ଓ ret ହେଉଛି ଲୋକଲ୍ ଭେରିଏବଲ୍ସ “
05:27 ବାସ୍ତବରେ, "ଲୋକଲ୍ ଭେରିଏବଲ୍ସ” କହିବାର ଉଦ୍ଦେଶ୍ୟ "ଆର୍ଗୁମେଣ୍ଟସ୍” ନୁହେଁ
05:32 "ଫଙ୍କଶନ୍ସ” ପରିଭାଷିତ କରିବା ସମୟରେ ଏହି ସମ୍ମେଳନକୁ ଆପଣ ପାଳନ କରିବା ଉଚିତ
05:36 For Loop ଭିତରେ ଆମେ, "ଆରେ ଏଲେମେଣ୍ଟସ୍"ର ସମୁଦାୟ ସଂଖ୍ୟା ଓ ଯୋଗକୁ ଗଣନା କରିଛେ
05:43 "ଏଲେମେଣ୍ଟସ୍"ର ସମୁଦାୟ ସଂଖ୍ୟା ସହିତ ଯୋଗକୁ ବିଭକ୍ତ କରି ଆମେ average ଗଣନା କରିଛେ

ଏବଂ ସେହି ଭାଲ୍ୟୁକୁ ଭେରିଏବଲ୍ retରେ ଷ୍ଟୋର୍ କରିଛେ

05:54 ଭେରିଏବଲ୍ retର ଭାଲ୍ୟୁକୁ ଏହି ଫଙ୍କଶନ୍ avg() ରିଟର୍ନ କରିଥାଏ
06:01 BEGIN Section ଭିତରେ ଆମେ, 5ଟି ଭିନ୍ନ ଭିନ୍ନ ସଂଖ୍ୟା ସହିତ "ଆରେ nums"କୁ ପରିଭାଷିତ କରିଛେ
06:07 “ପ୍ରିଣ୍ଟ ଷ୍ଟେଟମେଣ୍ଟ” ଭିତରେ ଆମେ, ୱନ୍ ଆର୍ଗୁମେଣ୍ଟ ସହିତ, ଯାହା ହେଉଛି "ଆରେନେମ୍", ଫଙ୍କଶନ୍ avg()କୁ କଲ୍ କରିଛେ
06:14 ତେଣୁ, ଆପଣଙ୍କୁ "ଆର୍ଗୁମେଣ୍ଟ” ଭାବରେ "ଲୋକଲ୍ ଭେରିଏବଲ୍ସ"କୁ ପାସ୍ କରିବାର ଆବଶ୍ୟକତା ନାହିଁ
06:20 ଟର୍ମିନଲ୍‌କୁ ଯାଆନ୍ତୁ. ଟର୍ମିନଲ୍ ଖାଲି କରିଦିଅନ୍ତୁ
06:26 ନିମ୍ନ କମାଣ୍ଡ ଟାଇପ୍ କରନ୍ତୁ - awk ସ୍ପେସ୍ ହାଇଫେନ୍ f ସ୍ପେସ୍ average ଡଟ୍ awk

Enter ଦାବନ୍ତୁ

06:37 ଆମେ, 3.6 ଭାବରେ ଆଉଟପୁଟ୍ ପାଇଲେ.

ଗୋଟିଏ କାଲକୁଲେଟର୍ ବ୍ୟବହାର କରି ଆପଣ ଏହାକୁ ଭେଲିଡେଟ୍ କରିପାରିବେ

06:44 ଚାଲନ୍ତୁ ଆଉ ଗୋଟିଏ ଉଦାହରଣ ଦେଖିବା.
06:47 ଗୋଟିଏ "ଷ୍ଟ୍ରିଙ୍ଗ୍"କୁ "ରିଭର୍ସ” କରିବା ପାଇଁ ମୁଁ ଗୋଟିଏ କୋଡ୍ ଲେଖିଛି ଏବଂ ତାହାକୁ reverse.awk ନାମ ଦେଇଛି.

ଗୋଟିଏ "ଷ୍ଟ୍ରିଙ୍ଗ୍"କୁ "ରିଭର୍ସ” କରିବା ପାଇଁ Recursive Function ବ୍ୟବହୃତ ହୋଇଥାଏ

06:57 କଣ୍ଟ୍ରୋଲ୍ କିପରି ପ୍ରବାହ ହେଉଛି ବୁଝିବା ପାଇଁ ଭିଡିଓକୁ ଏଠାରେ ପଜ୍ କରନ୍ତୁ ଏବଂ କୋଡ୍‌କୁ ଦେଖନ୍ତୁ.

ତା’ପରେ, ଆଉଟପୁଟ୍ ଦେଖିବା ପାଇଁ ଏହାକୁ ନିଷ୍ପାଦନ କରନ୍ତୁ

07:07 ଏକ ଆସାଇନମେଣ୍ଟ ଭାବେ, awkdemo.txt ଫାଇଲ୍‌ରେ ରୋଲ୍ ନମ୍ୱର୍ ଫିଲ୍ଡକୁ "ରିଭର୍ସ” କରିବା ପାଇଁ ଫଙ୍କଶନ୍ rev ବ୍ୟବହାର କରନ୍ତୁ
07:16 ଉଦାହରଣସ୍ୱରୂପ, ଯଦି ରୋଲ୍ ନମ୍ୱର୍ A001 ହୋଇଥାଏ, ତେବେ ଆଉଟପୁଟ୍ 100A ହେବା ଉଚିତ
07:24 କୋଡ୍ ଫାଇଲ୍ ଲିଙ୍କରେ ତାହା ପାଇଁ କୋଡ୍ reverse_roll.awk ଭାବରେ ପ୍ରଦାନ କରାଯାଇଛି
07:31 ଏଥିସହିତ ଆମେ ଏହି ଟ୍ୟୁଟୋରିଆଲର ସମାପ୍ତିକୁ ଆସିଲେ.

ସଂକ୍ଷିପ୍ତରେ -

07:36 ଏହି ଟ୍ୟୁଟୋରିଆଲରେ ଆମେ ଶିଖିଲେ - "ଫଙ୍କଶନ୍ ଡେଫିନେଶନ୍"ର ସିଣ୍ଟାକ୍ସ
07:41 "ଫଙ୍କଶନ୍ କଲ୍” ଓ "ରିଟର୍ନ ଷ୍ଟେଟମେଣ୍ଟ”
07:45 ଏକ ଆସାଇନମେଣ୍ଟ ଭାବେ - 1. ଗୋଟିଏ “2D ମେଟ୍ରିକ୍ସ"ର Transpose ତିଆରି କରିବାକୁ ଏକ ଫଙ୍କଶନ୍ ଲେଖନ୍ତୁ
07:52 ଗୋଟିଏ "ଆରେ"ରୁ ସର୍ବନିମ୍ନ ଭାଲ୍ୟୁ "ଏଲେମେଣ୍ଟ” ରିଟର୍ନ କରିବା ପାଇଁ ଏକ ଫଙ୍କଶନ୍ ଲେଖନ୍ତୁ
07:58 ନିମ୍ନ ଲିଙ୍କରେ ଉପଲବ୍ଧ ଭିଡିଓ ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ ପ୍ରୋଜେକ୍ଟକୁ ସାରାଂଶିତ କରେ.

ଦୟାକରି ଏହାକୁ ଡାଉନଲୋଡ୍ କରି ଦେଖନ୍ତୁ

08:06 ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ ପ୍ରୋଜେକ୍ଟ ଟିମ୍, ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ସ ବ୍ୟବହାର କରି କର୍ମଶାଳାମାନ ଚଲାନ୍ତି

ଏବଂ ପ୍ରମାଣପତ୍ର ଦିଅନ୍ତି.

08:16 ଅଧିକ ବିବରଣୀ ପାଇଁ ଦୟାକରି ଆମକୁ ଲେଖନ୍ତୁ
08:20 ଦୟାକରି ଏହି ଫୋରମରେ ନିଜର ସମୟବଦ୍ଧ ପ୍ରଶ୍ନ ପୋଷ୍ଟ୍ କରନ୍ତୁ
08:24 ସ୍ପୋକନ୍ ଟ୍ୟୁଟୋରିଆଲ୍ ପ୍ରୋଜେକ୍ଟ, ଭାରତ ସରକାରଙ୍କ MHRDର NMEICT ଦ୍ୱାରା ଅନୁଦାନ ପ୍ରାପ୍ତ.

ଏହି ମିଶନ୍ ଉପରେ ଅଧିକ ବିବରଣୀ ନିମ୍ନ ଲିଙ୍କରେ ଉପଲବ୍ଧ

08:36 IIT Bombay ତରଫରୁ

ମୁଁ ପ୍ରଦୀପ ଚନ୍ଦ୍ର ମହାପାତ୍ର ଆପଣଙ୍କଠାରୁ ବିଦାୟ ନେଉଛି. ଆମ ସହିତ ଜଡ଼ିତ ହୋଇଥିବାରୁ, ଧନ୍ୟବାଦ

Contributors and Content Editors

PoojaMoolya, Pradeep