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

From Script | Spoken-Tutorial
Revision as of 10:45, 30 January 2019 by Kaushik Datta (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time
Narration
00:01 awk এ multidimensional arrays বানানোর টিউটোরিয়ালে আপনাদের স্বাগত।
00:07 এখানে আমরা awk এ multidimensional arrays বানানো এবং multidimensional arrays স্ক্যান করা শিখব।
00:18 আমরা এটি কিছু উদাহরণ দিয়ে করব।
00:21 টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি উবুন্টু লিনাক্স 16.04 অপারেটিং সিস্টেম এবং gedit টেক্সট এডিটর 3.20.1.
00:33 আপনি পছন্দের যে কোনো টেক্সট এডিটর ব্যবহার করতে পারেন।
00:37 টিউটোরিয়ালটি অনুশীলন করতে ওয়েবসাইটে, আগের awk টিউটোরিয়ালগুলি দেখা উচিত।
00:45 আপনার C বা C++ এর মত কোনো প্রোগ্রামিং ভাষার মৌলিক জ্ঞান থাকতে হবে।
00:52 না হলে আমাদের ওয়েবসাইটে প্রাসঙ্গিক টিউটোরিয়ালটি দেখুন।
00:58 এই টিউটোরিয়ালে ব্যবহৃত ফাইল এই টিউটোরিয়াল পৃষ্ঠায় Code Files লিঙ্কে উপলব্ধ। তাদের ডাউনলোড করে এক্সট্র্যাক্ট করুন।
01:08 awk এ multidimensional array কি?
01:12 আমরা জানি যে একক মাত্রিক অ্যারেতে, অ্যারে এলিমেন্ট একক ইনডেক্স দ্বারা চিহ্নিত হয়।
01:19 উদাহরণস্বরূপ, week অ্যারে একক ইনডেক্স day দ্বারা চিহ্নিত করা হয়।
01:26 যদিও, বহুমাত্রিক অ্যারেতে, একটি এলিমেন্ট একাধিক ইনডেক্সের ক্রম দ্বারা চিহ্নিত করা হয়।
01:34 উদাহরণস্বরূপ, দুই মাত্রিক অ্যারে এলিমেন্ট 2 ইনডেক্সের ক্রম অনুসারে সনাক্ত করা হয়।
01:42 এখানে, একাধিক সূচক মাঝে একটি সেপারেটর সহ একক স্ট্রিং এ সংযোজিত হয়।
01:50 সেপারেটর বিল্ট-ইন ভ্যারিয়েবল SUBSEP এর ভ্যালু।
01:55 জুড়িত স্ট্রিং একটি সাধারণ এক মাত্রিক অ্যারের জন্য একক সূচক হিসাবে ব্যবহৃত হয়।
02:01 উদাহরণস্বরূপ, ধরুন আমরা লিখি multi বর্গাকার বন্ধনীতে 4 কমা 6 ইকুয়াল টু ডাবল উদ্ধৃতিতে ভ্যালু।
02:11 এখানে multi হল মাল্টি-ডাইমেনশনাল অ্যারের নাম। তারপর, সংখ্যা 4 এবং 6 স্ট্রিং এ রূপান্তরিত হয়।
02:21 ধরুন, SUBSEP এর ভ্যালু হল হ্যাশ চিহ্ন (#)।
02:26 তারপর, সেই সংখ্যাগুলি তাদের মাঝে হ্যাশ চিহ্ন (#) সহ সংযোজিত হয়।
02:32 তাই অ্যারে এলিমেন্ট multi বর্গাকার বন্ধনীতে ডাবল উদ্ধৃতিতে 4 হ্যাশ 6 কে ডাবল উদ্ধৃতিতে value নির্ধারণ করা হয়।
02:43 SUBSEP এর ডিফল্ট ভ্যালু ডাবল উদ্ধৃতিতে ব্যাকস্ল্যাশ 034 এ স্ট্রিং।
02:50 এটি আসলে একটি প্রিন্ট ছাড়া অক্ষর। এটি সাধারণত অধিকাংশ ইনপুট তথ্যে দেখায় না।
02:58 স্লাইডে দেখানো একটি দ্বি মাত্রিক অ্যারে ঘোষণা করার চেষ্টা করি।
03:03 Row 1 এ দুটি এলিমেন্ট A এবং B রয়েছে।
03:08 Row 2 তে C এবং D এলিমেন্ট রয়েছে।
03:12 Ctrl, Alt এবং T কী একসাথে টিপে টার্মিনাল খুলুন।
03:17 সেই ফোল্ডারে যান যেখানে cd কমান্ড দ্বারা Code Files ডাউনলোড এবং এক্সট্র্যাক্ট করেছেন।
03:24 নিম্নরূপে অ্যারে সংজ্ঞায়িত করুন। এখানে দেখানো কমান্ডটি সাবধানে লিখুন। তারপর Enter টিপুন।
03:35 আমরা কোনো এরর ছাড়া কমান্ড প্রম্পট ফিরে পাই। সুতরাং, অ্যারে সংজ্ঞায়িত হয়েছে।
03:41 আমরা কোনো আউটপুট পাই না কারণ আমরা কোডে প্রিন্ট করতে কিছুই দেইনি।
03:47 প্রিন্ট স্টেটমেন্ট যোগ করি।
03:50 টার্মিনালে পূর্বে চালিত কমান্ড পেতে আপ অ্যারো কী টিপুন।
03:56 ক্লোজিং কোঁকড়া বন্ধনীর আগে লিখুন, semicolon স্পেস print স্পেস a বর্গাকার বন্ধনীতে 2 কমা 2. কমান্ডটি চালাতে Enter টিপুন।
04:13 লক্ষ্য করুন, আমরা আউটপুট হিসাবে বড়হাতের D পাই।
04:18 প্রদত্ত বহুমাত্রিক অ্যারেতে কোনো নির্দিষ্ট ইনডেক্সের ক্রম বিদ্যমান থাকলে কিভাবে যাচাই করি?
04:25 আমরা অপারেটর ব্যবহার করতে পারি।
04:28 আমরা ইতিমধ্যে আগে এই শৃঙ্খলায় একক মাত্রিক অ্যারেতে এটি দেখেছি।
04:34 আমাদের বন্ধনীতে ইনডেক্স এবং কমা দ্বারা পৃথক করা সমগ্র ক্রম লিখতে হবে।
04:42 এটির একটি উদাহরণে দেখি।
04:45 আমি ইতিমধ্যে test_multi.awk নামে স্ক্রিপ্ট লিখেছি।
04:51 একই ফাইল এই টিউটোরিয়াল পৃষ্ঠার Code Files লিঙ্কে উপলব্ধ।
04:56 আমরা আগের আলোচনারয় দেখানো একটি 2 বাই 2 অ্যারে সংজ্ঞায়িত করেছি।
05:02 তারপর আমি দুটি if কন্ডিশন লিখেছি।
05:06 প্রথম if কন্ডিশন যাচাই করে যে ইনডেক্স one comma one এর এলিমেন্ট রয়েছে কি নয়।
05:13 আমাদের বন্ধনীতে বহুমাত্রিক অ্যারের ইনডেক্স লিখতে হবে।
05:18 কন্ডিশন true হলে, এটি প্রিন্ট করবে one comma one is present.
05:23 অন্যথায় এটি প্রিন্ট করবে one comma one is absent.
05:28 একইভাবে, three comma one ইনডেক্সের এলিমেন্টের উপস্থিতি যাচাই করব। ফাইল এক্সিকিউট করি।
05:36 টার্মিনালে যান এবং লিখুন awk স্পেস হাইফেন ছোটহাতের f স্পেস test আন্ডারস্কোর multi ডট awk এবং Enter টিপুন।
05:49 আউটপুট বলে যে one comma one উপস্থিত এবং three comma one অনুপস্থিত।
05:55 আরেকটি উদাহরণ নেই। ধরুন আমরা একটি ম্যাট্রিক্স ট্রান্সপোজ বানাতে চাই।
06:02 প্রদত্ত ম্যাট্রিক্সের ট্রান্সপোজ ম্যাট্রিক্সের সারি এবং কলাম বদলে করা হয়। এটি আমরা কিভাবে করতে পারি?
06:11 আমি 2D-array.txt ফাইলে একটি দ্বি-মাত্রিক অ্যারে ম্যাট্রিক্স বানিয়েছি।
06:19 আমি transpose.awk নামে কোড লিখেছি।
06:24 প্রথমে এই awk স্ক্রিপ্টে action বিভাগ দেখি।
06:29 এখানে আমরা রোতে সর্বাধিক সংখ্যক ফীল্ড গণনা করছি এবং গণনাকৃত ভ্যালু 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, one থেকে NF পর্যন্ত ট্রান্সভার্স হবে এবং x প্রতিটি ইটারেশনের পর 1 দ্বারা বৃদ্ধি হবে।
07:39 x এর প্রতিটি ভ্যালুর জন্য, $x(dollar x) ফীল্ড x এর ভ্যালু প্রতিনিধিত্ব করে।
07:46 সেই ভ্যালু ইনডেক্স NR comma x এ অ্যারে ম্যাট্রিক্সে সংরক্ষণ করা হবে।
07:53 উদাহরণস্বরূপ, 1 কমা 1 এর ম্যাট্রিক্স ইনপুট ফাইল থেকে ভ্যালু সংরক্ষণ করে যা ইনডেক্স 1 কমা 1 এ বিদ্যমান।
08:02 তাই awk এই কোড দ্বারা সম্পূর্ণ ইনপুট ফাইল প্রসেস করার পরে, ম্যাট্রিক্স অ্যারে সম্পূর্ণরূপে গঠিত হবে।
08:10 এটি ইনপুট ফাইলের সম্পূর্ণ তথ্যকে দ্বিমাত্রিক অ্যারে ফরম্যাটে সংরক্ষণ করবে।
08:16 এখন, END বিভাগের ভিতরে দেখি।
08:20 আমরা ম্যাট্রিক্সের ট্রান্সপোজ প্রিন্ট করতে nested for loop লিখেছি।
08:25 আমি ধরে নিচ্ছি আপনি মৌলিক C প্রোগ্রামিং জানেন। তাই কোডের এই অংশ বিস্তারে ব্যাখ্যা করছি না।
08:34 বিস্তারে কোডটি দেখতে এবং নিজের থেকে বুঝতে এখানে ভিডিওটি থামান।
08:40 এখন, আমরা একটি বহুমাত্রিক অ্যারে স্ক্যান করা শিখব।
08:45 Awk এ কোনো বহুমাত্রিক অ্যারে নেই।
08:50 তাই বহুমাত্রিক অ্যারে স্ক্যান করতে কোনো বিশেষ for স্টেটমেন্ট থাকতে পারে না।
08:56 আপনার অ্যারে স্ক্যান করতে বহুমাত্রিক উপায় থাকতে পারে।
09:00 আপনি এর জন্য স্প্লিট ফাংশনের সাথে for স্টেটমেন্ট করতে পারেন।
09:05 এখন দেখি যে split ফাংশন কি। split ফাংশন একটি স্ট্রিং খণ্ডিত বা বিভক্ত করতে ব্যবহৃত হয়।
09:14 এবং বিভিন্ন টুকরো একটি অ্যারেতে রাখুন।
09:18 সিনট্যাক্স নিম্নরূপ। প্রথম আর্গুমেন্টে খণ্ডিত স্ট্রিং রয়েছে।
09:25 দ্বিতীয় আর্গুমেন্ট অ্যারের নাম নির্দিষ্ট করে যেখানে বিভক্ত জিনিস খণ্ডিত করা হবে।
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 তারপর ইটারেটার সহ for লুপ রয়েছে।
10:16 ইটারেটর প্রতিটি ইটারেশনের জন্য প্রতিটি ইনডেক্স ভ্যালুতে সেট করা হবে। যেমন 1,1 তারপর 1,2 এবং এইভাবে।
10:27 split ফাংশন ইটারেটরকে টুকরো করে যা SUBSEP দ্বারা পৃথক করা হয়।
10:34 টুকরো arr অ্যারেতে সংরক্ষণ করা হবে।
10:38 arr[1] এবং arr[2] যথাক্রমে প্রথম ইনডেক্স এবং দ্বিতীয় ইনডেক্স রাখে। এই ফাইলটি এক্সিকিউট করি।
10:48 টার্মিনালে যান এবং লিখুন - awk স্পেস হাইফেন ছোটহাতের f স্পেস multi আন্ডারস্কোর scan ডট awk এবং Enter টিপুন।
11:01 আউটপুট দেখুন; ইনডেক্সের মূল ক্রম পুনরুদ্ধার করা হয়েছে।
11:07 সংক্ষিপ্তকরণ করি। এখানে আমরা শিখেছি- awk এ multidimensional arrays বানানো এবং multidimensional arrays স্ক্যান করা।
11:18 অনুশীলনী হিসাবে, দ্বিমাত্রিক অ্যারেকে 90 ডিগ্রী ঘোরাতে একটি awk স্ক্রিপ্ট লিখুন এবং ঘূর্ণমান ম্যাট্রিক্স প্রিন্ট করুন।
11:28 নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি প্রকল্পকে সারসংক্ষেপ বোঝায়। এটি ডাউনলোড করে দেখুন।
11:36 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে। অনলাইন পরীক্ষা পাস করলে প্রশংসাপত্র দেয়।
11:45 আরো বিস্তারিত জানতে আমাদের লিখুন।
11:49 এই ফোরামে আপনার টাইমড ক্যোয়ারী পোস্ট করুন। এই সাইটে যান।
11:53 স্পোকেন টিউটোরিয়াল প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত। এই মিশনের আরো তথ্য এই লিঙ্কে প্রাপ্তিসাদ্ধ।
12:05 আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। আমাদের সাথে যোগাযোগের জন্য ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta