Linux-AWK/C2/Loops-in-awk/Bengali

From Script | Spoken-Tutorial
Revision as of 17:07, 29 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 এ loops এর টিউটোরিয়ালে আপনাদের স্বাগত।
00:06 এখানে আমরা awk এ

while, do-while, for এবং আরো looping কাঠামো সম্পর্কে শিখব।

00:16 আমরা এটি কিছু উদাহরণ দিয়ে করব।
00:20 টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি উবুন্টু লিনাক্স 16.04 অপারেটিং সিস্টেম এবং gedit টেক্সট এডিটর 3.20.1.
00:32 আপনি পছন্দের যে কোনো টেক্সট এডিটর ব্যবহার করতে পারেন।
00:36 টিউটোরিয়ালটি অনুশীলন করতে ওয়েবসাইটে, আগের awk টিউটোরিয়ালগুলি দেখা উচিত।
00:43 আপনার C বা C++ এর মত কোনো প্রোগ্রামিং ভাষার মৌলিক জ্ঞান থাকতে হবে।
00:50 না হলে আমাদের ওয়েবসাইটে প্রাসঙ্গিক টিউটোরিয়ালটি দেখুন।
00:56 এই টিউটোরিয়ালে ব্যবহৃত ফাইল এই টিউটোরিয়াল পৃষ্ঠায় Code Files লিঙ্কে উপলব্ধ। তাদের ডাউনলোড করে এক্সট্র্যাক্ট করুন।
01:06 loop আমাদের বার বার এক বা একাধিক কর্ম সঞ্চালন করতে দেয়।
01:12 awk এ while, do-while এবং for হল উপলব্ধ loops.
01:18 while loop এর সিনট্যাক্স এখানে দেখা যাবে।
01:22 While loop প্রথমে যাচাই করে যে নির্দিষ্ট কন্ডিশন true কিনা।
01:27 হ্যাঁ হলে, এটি বডিতে কোড এক্সিকিউট করে। এই লুপ while কন্ডিশন true হওয়া পর্যন্ত পুনরাবৃত্তি হবে।
01:37 আমরা আগে ব্যবহৃত একই awkdemo.txt ফাইল ব্যবহার করব।
01:43 আমি ইতিমধ্যে while_loop.awk নামে স্ক্রিপ্ট লিখেছি।
01:48 একই ফাইল এই টিউটোরিয়ালের Code Files লিঙ্কে উপলব্ধ।
01:53 এখানে Pipe চিহ্ন হিসাবে ফীল্ড সেপারেটর সেট করেছি।
01:58 প্রথমে, লুপ ভ্যারিয়েবল i এর ভ্যালু 1 সেট করতে হবে।
02:04 এখানে, আমরা আরেকটি ভ্যারিয়েবল f নিয়েছি এবং 1 এ শুরু করেছি।
02:10 ভ্যারিয়েবল f প্রতিটি রেকর্ডের জন্য ফীল্ড কাউন্টার বা ফীল্ডের স্থান বোঝায়।
02:17 এখন, while কন্ডিশনে, যাচাই করি যে i, 3 এর চেয়ে কম বা সমান কিনা।
02:23 হ্যাঁ হলে, এটি awkdemo.txt ফাইলে রেকর্ডের জন্য f তম ফীল্ডের ভ্যালু প্রিন্ট করবে।
02:31 তারপর আমরা field counter f কে 1 দ্বারা বৃদ্ধি করব।
02:36 এরপর, আমরা লুপ ভ্যারিয়েবল i কে 1 দ্বারা বৃদ্ধি করব।
02:43 এই printf প্রতিটি সারির শেষে একটি নতুন অক্ষর প্রিন্ট করার জন্য।
02:49 এই লুপ awkdemo.txt ফাইলের সকল রেকর্ডের জন্য কার্যকর করা হবে।
02:55 যার মানে প্রতিটি রেকর্ডের জন্য প্রথম 3 টি ফীল্ড প্রিন্ট করা হবে।
03:00 এখন এই কোড কার্যকর করি।
03:03 Ctrl, Alt এবং T কী একসাথে টিপে টার্মিনাল খুলুন।
03:09 সেই ফোল্ডারে যান যেখানে cd কমান্ড দ্বারা Code Files ডাউনলোড এবং এক্সট্র্যাক্ট করেছেন।
03:16 এখন লিখুন: awk স্পেস হাইফেন ছোটহাতের f স্পেস while_loop.awk স্পেস awkdemo.txt. এন্টার টিপুন।
03:29 লক্ষ্য করুন আমরা আউটপুটে সকল সারির প্রথম তিনটি ফীল্ড পেয়েছি।
03:35 এখন do-while লুপ সহ একই কাজ করি।
03:38 এখানে do-while লুপের সিনট্যাক্স দেখা যাবে।
03:42 do-while loop সর্বদা একবার বডির ভিতরে কোডটি কার্যকর করে।
03:47 তারপর এটি নির্দিষ্ট কন্ডিশন যাচাই করে. এটি বডির ভিতরে নির্দিষ্ট কন্ডিশন true হওয়া পর্যন্ত কোড পুনরাবৃত্তি করে।
03:56 আমি ইতিমধ্যে একটি স্ক্রিপ্ট লিখে do_loop.awk হিসাবে নাম দিয়েছি। একই ফাইল Code Files লিঙ্কে উপলব্ধ।
04:06 এই কোডে, এটি do লুপের স্টেটমেন্ট, যা প্রথমে কার্যকর করা হবে। এই কন্ডিশন যাচাই করা হবে।
04:15 এরপর, লুপের ভিতরে স্টেটমেন্ট কন্ডিশন true না হওয়া পর্যন্ত কার্যকর করা হবে।
04:23 এই লুপ awkdemo.txt ফাইলে সকল রেকর্ডের জন্য পুনরাবৃত্তি করবে যার মানে প্রথম 3 টি ফীল্ড সকল রেকর্ডের জন্য প্রিন্ট হবে।
04:33 টার্মিনালে যাই। টার্মিনাল মুছে ফেলি।
04:38 এখন লিখুন: awk স্পেস হাইফেন ছোটহাতের f স্পেস do আন্ডারস্কোর loop ডট awk স্পেস awkdemo ডট txt. এন্টার টিপুন।
04:52 আমরা একই আউটপুট পাই। তাহলে আমাদের উভয় while এবং do-while কেন রয়েছে?
04:58 পার্থক্যটি বুঝি।
05:00 while আন্ডারস্কোর loop ডট awk ফাইলে যান।
05:05 এখন, লুপ কাউন্টার i এর ভ্যালু 1 থেকে 4 এ বদলান।
05:11 এটি শুরু থেকে নির্দিষ্ট কন্ডিশন false করবে। তাই এর মানে, আমরা কোনো আউটপুট পাবো না।
05:19 ফাইলটি সংরক্ষণ করে টার্মিনালে যান।
05:22 টার্মিনাল মুছুন। এখন আপ অ্যারো কী টিপুন যতক্ষণ না while লুপ এক্সিকিউটের জন্য কমান্ড পান।
05:30 এখন এন্টার টিপুন।
05:32 আমরা খালি স্পেস কোনো আউটপুট পাচ্ছি না।
05:37 awkdemo.txt ফাইলে প্রতিটি রেকর্ডের জন্য, খালি লাইন আউটপুটে প্রিন্ট হচ্ছে।
05:44 এখন, do লুপ ফাইলে কিছু পরিবর্তন করি।
05:48 এখন do আন্ডারস্কোর loop ডট awk ফাইলে যাই।
05:53 i এর ভ্যালু 1 থেকে 4 এ বদলান।
05:57 ফাইলটি সংরক্ষণ করে টার্মিনালে যান।
06:01 টার্মিনাল মুছুন। do লুপের জন্য কমান্ড না হওয়া পর্যন্ত আপ অ্যারো কী টিপুন। এন্টার টিপুন।
06:10 আউটপুটে, প্রতিটি সারির শুধুমাত্র প্রথম ফীল্ড প্রিন্ট হয়। এর কারণ কি?
06:16 প্রতিটি সারির জন্য, awk প্রথম ফীল্ডের ভ্যালু প্রিন্ট করে, কারণ ভ্যারিয়েবল f এর ভ্যালু 1 থেকে শুরু হয়। তারপর কন্ডিশন যাচাই করা হয়।
06:28 যেহেতু লুপ কাউন্টার i এর ভ্যালু 4, কন্ডিশন হল false. তাই লুপটি সেই রেকর্ডের জন্য তখনই বাতিল করা হয়।
06:39 এই লুপ awkdemo.txt ফাইলে সকল রেকর্ডের জন্য পুনরাবৃত্তি হবে।
06:44 যার মানে প্রতিটি রেকর্ডের প্রথম ফীল্ড প্রিন্ট হবে।
06:49 আমরা প্রতিটি রেকর্ডের জন্য অন্তত একবার আউটপুট পাচ্ছি।
06:53 যে কোনো কন্ডিশনে অন্তত একবার কাজ করতে do-while লুপ ব্যবহার করুন।
07:01 আমরা for লুপ দিয়ে একই কাজ করতে পারি।
07:05 for লুপের সিনট্যাক্স এখানে দৃশ্যমান।
07:09 for স্টেটমেন্ট ইনিসিয়েলাইজেশন এক্সিকিউট করে শুরু হয়।
07:14 তারপর, কন্ডিশন true হওয়া পর্যন্ত, এটি ভিতরের স্টেটমেন্ট এবং তারপর ইনক্রিমেন্ট এক্সিকিউট করে।
07:23 C বা C++ এর মত ভাষার পরিচিতি ধরে নিয়ে, আমি সিনট্যাক্স বিস্তারে ব্যাখ্যা করছি না।
07:30 এই কন্ডিশনের জন্য for লুপ এইরকম দেখায়।
07:35 এখানে, ইনিশিয়েলাইজেশন, কন্ডিশন চেকিং এবং ভ্যারিয়েবল ইন্ক্রিমেন্টেশন একই লাইনে করা হয়।
07:43 এটি নিজে থেকে চেষ্টা করুন।
07:46 এতো কিছু লুপিং কাঠামো রয়েছে break, continue, exit.
07:53 আমরা আসন্ন টিউটোরিয়ালে এই বিষয়ে কিছু প্রাসঙ্গিক উদাহরণ দেখব।
07:58 আমাদের ফাইলে একক এবং একাধিক কমেন্ট থাকতে পারে।
08:03 এখানে দেখেন যে একক লাইন কমেন্ট একক হ্যাশ (#) চিহ্ন দিয়ে ঘোষণা করা হয়।
08:10 মাল্টিলাইন কমেন্ট ডাবল হ্যাশ (##) চিহ্ন দ্বারা ঘোষণা করা হয়।
08:16 এখন, আউটপুটে এই কমেন্ট যাচাই এবং প্রিন্ট করার কোনো মানে নেই।
08:22 আমাদের হ্যাশ (##) চিহ্ন দিয়ে শুরু হওয়া লাইন বাদ দিতে হবে। এটি আমরা কিভাবে করতে পারি?
08:28 যারা 8000 এর বেশী পেয়েছে তাদের জন্য স্টাইপেন্ডে 50% বৃদ্ধি করার কেস মনে করুন।
08:36 কমেন্ট বাদ দিতে আমরা একই উদাহরণ ব্যবহার করব।
08:40 আমি এক্সিকিউশনের জন্য এখানে দেখানো next.awk নামে ফাইল বানিয়েছি।
08:47 এখন, এই কমান্ডের মানে কি?
08:50 Awk প্রতিটি লাইনের শুরুতে প্যাটার্ন, ক্যারেট সাইন হ্যাশ চিহ্ন (^ #) সনাক্ত করবে।
08:57 প্যাটার্নটি পাওয়া গেলে next কীওয়ার্ড awk কে অবিলম্বে বর্তমান লাইনটি এড়িয়ে যেতে বলে।
09:04 তারপর awk ফাইল পরবর্তী লাইন থেকে প্রক্রিয়াকরণ শুরু করবে। এটি প্রক্রিয়াকরণ সময় সংরক্ষণ করবে।
09:12 টার্মিনালে যান এবং এখানে দেখানো কমান্ড লিখুন এবং এন্টার টিপুন।
09:20 আমরা কোনো কমেন্ট ছাড়াই আউটপুট পাই।
09:24 ধরুন, আমাদের একই ফরম্যাটের সাথে একাধিক ফাইলে শিক্ষার্থীর রেকর্ড আছে। Awkdemo_mod.txt এবং awkdemo2.txt.
09:37 এটি আমাদের পূর্ববর্তী ফাইলের অনুরূপ।
09:41 এতে হ্যাশ চিহ্নের সাথে কমেন্ট রয়েছে।
09:45 এবং ডাবল হ্যাশ ## চিহ্নের সাথে এর শেষে বড় টেক্সট রয়েছে।
09:50 আমাদের তথ্য দুটি ভিন্ন ফাইলে রয়েছে। awk সকল শিক্ষার্থীদের একটি বৃদ্ধি দিতে উভয় ফাইল প্রসেস করা উচিত।
09:59 একবার প্রথম ফাইলের ডাবল হ্যাশ (##) চিহ্নে এ পৌঁছলে, awk এর সেই ফাইলের প্রসেস সম্পূর্ণরূপে বন্ধ করতে হবে।
10:06 তারপর পরবর্তী ফাইল থেকে এক্সিকিউশন শুরু করতে হবে। এই প্রক্রিয়াকরণ সময় সংরক্ষণ করবে।
10:13 এখানে দেখানো next.awk সংশোধন করুন।
10:17 আমি begin স্টেটমেন্টের নীচে dollar জিরো tilde স্ল্যাশ caret চিহ্ন ডাবল hash স্ল্যাশ বন্ধনীতে nextfile সেমিকোলন যোগ করেছি।
10:29 এটি প্রতিটি লাইনের শুরুতে ডাবল হ্যাশ # চিহ্ন সন্ধান করবে।
10:34 পাওয়া গেলে, awk পরবর্তী ফাইল প্রক্রিয়াকরণ করতে বর্তমান ফাইল এড়িয়ে যাবে।
10:39 ফাইলটি সংরক্ষণ করুন।
10:41 টার্মিনালে ফিরে গিয়ে নিম্ন কমান্ড লিখুন। এন্টার টিপুন।
10:48 আমরা উভয় ফাইল থেকে আউটপুট পাচ্ছি।
10:53 এটি আমাদের টিউটোরিয়ালের শেষে নিয়ে আসে। সংক্ষিপ্তকরণ করি।
10:58 এখানে আমরা awk এ while, do… while, for, next, nextfile শিখেছি।
11:06 awkdemo2.txt এর শিক্ষাথীর রেকর্ডের জন্য অনুশীলনী হিসাবে, শুধুমাত্র জোড় ফীল্ড প্রিন্ট করুন (যেমন field 2, field 4 ইত্যাদি, ইনপুট ফাইলে কতগুলি ফীল্ড রয়েছে তার ভিত্তিতে)
11:22 নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি প্রকল্পকে সারসংক্ষেপ বোঝায়। এটি ডাউনলোড করে দেখুন।
11:30 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে। অনলাইন পরীক্ষা পাস করলে প্রশংসাপত্র দেয়।আরো বিস্তারিত জানতে আমাদের লিখুন।
11:43 এই ফোরামে আপনার টাইমড ক্যোয়ারী পোস্ট করুন। এই সাইটে যান।
11:49 স্পোকেন টিউটোরিয়াল প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত। এই মিশনের আরো তথ্য এই লিঙ্কে প্রাপ্তিসাদ্ধ।
12:01 আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। আমাদের সাথে যোগাযোগের জন্য ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta