Linux-AWK/C2/Built-in-Variables-in-awk/Bengali

From Script | Spoken-Tutorial
Revision as of 12:03, 16 July 2019 by Kaushik Datta (Talk | contribs)

Jump to: navigation, search
Time
Narration
00:01 awk built-in variables এবং awk script এর টিউটোরিয়ালে আপনাদের স্বাগত।
00:07 এখানে আমরা Built-in variables , awk script সম্পর্কে শিখব।
00:14 আমরা এটি কিছু উদাহরণ দিয়ে করব।
00:17 টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি উবুন্টু লিনাক্স 16.04 অপারেটিং সিস্টেম এবং gedit টেক্সট এডিটর 3.20.1.
00:30 এই টিউটোরিয়ালে ব্যবহৃত ফাইল এই টিউটোরিয়াল পৃষ্ঠায় Code Files লিঙ্কে উপলব্ধ। তাদের ডাউনলোড করে এক্সট্র্যাক্ট করুন।
00:40 টিউটোরিয়ালটি অনুশীলন করতে ওয়েবসাইটে, আগের awk টিউটোরিয়ালগুলি দেখা উচিত।
00:47 না হলে আমাদের ওয়েবসাইটে প্রাসঙ্গিক টিউটোরিয়ালটি দেখুন।
00:52 প্রথমে, awk এ কিছু built-in variables দেখি।
00:57 বড়হাতের RS ইনপুট ফাইলে রেকর্ড সেপারেটর নির্দিষ্ট করে। ডিফল্টরূপে, এটি নতুন লাইন।
01:07 বড়হাতের FS ইনপুট ফাইলে ফীল্ড সেপারেটর নির্দিষ্ট করে।
01:13 ডিফল্টরূপে, FS এর ভ্যালু একটি হোয়াইটস্পেস।
01:18 বড়হাতের ORS আউটপুট রেকর্ড সেপারেটর সংজ্ঞায়িত করে। ডিফল্টরূপে, এটি নতুন লাইন।
01:27 বড়হাতের OFS আউটপুট ফীল্ড সেপারেটর সংজ্ঞায়িত করে। ডিফল্টরূপে, এটি হোয়াইটস্পেস।
01:36 এখন প্রত্যেকটির অর্থ বুঝি।
01:40 এখন awkdemo ফাইল দেখি।
01:44 আমরা awk কমান্ডের সাথে awkdemo ফাইল প্রক্রিয়াকরণ করলে এটি ইনপুট ফাইল হয়।
01:51 লক্ষ্য করুন সকল রেকর্ড একটি নতুন লাইন অক্ষর দ্বারা একে অপরের থেকে আলাদা হয়।
01:58 রেকর্ড সেপারেটর RS ভ্যারিয়েবলের জন্য নতুন লাইন হল ডিফল্ট ভ্যালু। তাই অন্য কিছু করার প্রয়োজন নেই।
02:08 লক্ষ্য করুন সকল ফীল্ড পাইপ চিহ্ন দ্বারা পৃথক করা হয়। এটি কিভাবে আমরা awk কে জানাবো? এটি দেখি।
02:18 ডিফল্টরূপে, যে কোনো স্পেস বা ট্যাব ফীল্ডগুলি আলাদা করে।
02:24 আমরা পূর্ববর্তী টিউটোরিয়ালে শেখা অনুযায়ী হাইফেন বড়হাতের F বিকল্প দ্বারা এটি পুনরায় সেট করতে পারি।
02:33 অন্যথায়, আমরা এটিকে FS ভ্যারিয়েবল দ্বারা BEGIN বিভাগে রিসেট করতে পারি।
02:40 এটি একটি উদাহরণের মাধ্যমে করি। ধরুন, আমি এমন শিক্ষার্থীদের নাম খুঁজতে চাই যারা 5000 টাকার বেশী স্টাইপেন্ড পাচ্ছে।
02:51 CTRL, ALT এবং T কী একসাথে টিপে টার্মিনাল খুলুন।
02:57 cd কমান্ড দ্বারা সেই ফোল্ডারে যান যেখানে Code Files ডাউনলোড এবং এক্সট্র্যাক্ট করেছেন।
03:04 এখানে দেখানো কমান্ড লিখুন।
03:08 এখানে BEGIN বিভাগে, পাইপ চিহ্ন হিসাবে FS এর ভ্যালু নির্ধারণ করেছি। একইভাবে, RS ভ্যারিয়েবল সংশোধন করতে পারি।
03:19 কমান্ড এক্সিকিউট করতে এন্টার টিপুন।
03:23 আউটপুটটি শিক্ষার্থীদের তালিকা দেখায় যারা 5000 টাকার অধিক স্টাইপেন্ড পেয়েছে।
03:30 এখানে নামের ফীল্ড এবং স্টাইপেন্ড ফীল্ড ব্ল্যান্ক স্পেস দ্বারা আলাদা করা হয়।
03:36 এছাড়াও, সকল রেকর্ড একটি নতুন লাইন অক্ষর দ্বারা আলাদা করা হয়।
03:42 ধরুন আমরা আউটপুট ফীল্ড সেপারেটর হিসাবে কোলন এবং আউটপুট রেকর্ড সেপারেটর হিসাবে ডবল নতুন লাইন চাই।
03:52 আমরা এটি কিভাবে করি? এটি দেখি।
03:55 টার্মিনালে, পূর্বে চালিত কমান্ড পেতে আপ অ্যারো কী টিপুন।
04:01 এখানে দেখানো কমান্ড সংশোধন করুন। এবং তারপর Enter টিপুন।
04:08 আমরা পছন্দসই ফরম্যাটে আউটপুট পাই।
04:12 এখন, আমাদের নতুন ইনপুট ফাইল হল sample.txt.
04:18 লক্ষ্য করুন এখানে ফীল্ড সেপারেটর হল নতুন লাইন এবং রেকর্ড সেপারেটর হল ডাবল নতুন লাইন।
04:27 আমরা কিভাবে রোল নম্বর পেতে পারি এবং এই ফাইল থেকে নামের তথ্য?
04:32 হ্যাঁ, আপনি সঠিক অনুমান করেছেন। আমরা উভয় FS এবং RS ভ্যারিয়েবল বদলাতে হবে।
04:39 টিউটোরিয়ালটি থামান এবং এটি অনুশীলনী হিসাবে করুন।
04:43 এরপর, অন্যান্য বিল্ট-ইন ভ্যারিয়েবল দেখি।
04:47 বড়হাতের NR, awk দ্বারা প্রসেস করা অজানা রেকর্ডের সংখ্যা দেয়।
04:53 বড়হাতের NF বর্তমান রেকর্ডে ফীল্ডের সংখ্যা দেয়।
04:59 এর একটি উদাহরণ দেখি। ধরুন, আমরা ফাইলের অসম্পূর্ণ লাইন খুঁজতে চাই।
05:07 এখানে, অসম্পূর্ণ লাইন মানে এটি নরম্যাল 6 টি ফীল্ডের চেয়ে কম।
05:13 টার্মিনালে যান। Ctrl এবং L কী ব্যবহার করে টার্মিনাল মুছুন।
05:20 এখানে দেখানো কমান্ড লিখুন।
05:24 যেহেতু ফীল্ডগুলি পাইপ চিহ্ন দ্বারা পৃথক করা হয়েছে, BEGIN বিভাগে FS ভ্যালু পাইপ চিহ্নে সেট করুন।
05:33 এরপর NF নট ইকুয়াল টু 6 লিখেছি।
05:37 এটি যাচাই করে যে বর্তমান লাইনের ফীল্ডের সংখ্যা 6 এর সমান কিনা।
05:43 true হলে, প্রিন্ট বিভাগ $0 দ্বারা প্রদত্ত সমগ্র লাইন সহ রেকর্ডের লাইন সংখ্যা NR প্রিন্ট করবে। এন্টার টিপুন।
05:55 আউটপুটে, আমরা দেখি পারি যে রেকর্ড সংখ্যা 16 অসম্পূর্ণ রেকর্ড। এতে 6 এর বদলে শুধুমাত্র 5 টি ফীল্ড রয়েছে।
06:05 আরেকটি উদাহরণ দেখি। সেখানে কতগুলি ফীল্ড রয়েছে তার নির্বিশেষে প্রতিটি শিক্ষার্থীর জন্য প্রথম এবং শেষ ফীল্ড প্রিন্ট করতে পারেন?
06:16 এখানে টার্মিনালে দেখানো কমান্ড লিখুন।
06:21 এখানে আমরা FS ভ্যারিয়েবল সেট করার বদলে হাইফেন বড়হাতের F বিকল্প ব্যবহার করেছি। এন্টার টিপুন।
06:30 ফাইলের প্রতিটি রেকর্ডের জন্য আমরা শুধুমাত্র প্রথম এবং শেষ ফীল্ড পাই।
06:36 এখন অন্য কিছু চেষ্টা করি।
06:39 ধরুন, শিক্ষার্থীর রেকর্ড দুটি ফাইল demo1.txt, demo2.txt তে ভাগ করা হয়।
06:48 আমরা এই দুটি ফাইলের প্রথম 3 টি লাইন প্রিন্ট করতে চাই। আমরা এটি NR ভ্যারিয়েবল দ্বারা করতে পারি।
06:57 এখানে দুটি ফাইলের বিষয়বস্তু রয়েছে।
07:02 এখন প্রতিটি ফাইল থেকে প্রথম 3 টি লাইন দেখাতে, টার্মিনালে নিম্ন কমান্ড লিখুন।
07:11 এন্টার টিপুন।
07:13 আউটপুট demo1.txt ফাইলের শুধুমাত্র প্রথম 3 টি রেকর্ড দেখায়।
07:20 আমরা কিভাবে দ্বিতীয় ফাইলের জন্য একই প্রিন্ট করতে পারি?
07:24 সমাধান হল NR এর বদলে FNR ব্যবহার করা। FNR হল বর্তমান ফাইলে বর্তমান রেকর্ড সংখ্যা।
07:34 প্রতিবার নতুন রেকর্ড পড়লে FNR বৃদ্ধি পায়।
07:39 প্রতিবার যখন নতুন ইনপুট ফাইল শুরু হয় এটি শূন্যে পুনরায় চালু হয়।
07:46 কিন্তু এক্সিকিউশন শুরু হওয়া থেকে NR হল প্রক্রিয়াকৃত ইনপুট রেকর্ড awk এর সংখ্যা।
07:55 এটি একটি নতুন ফাইল দিয়ে শূন্যে রিসেট হয় না।
07:59 টার্মিনালে যান। পূর্বে চালিত কমান্ড পেতে আপ অ্যারো কী টিপুন।
08:06 নিম্নরূপে পূর্ববর্তী কমান্ড সংশোধন করুন। NR এর বদলে FNR লিখুন।
08:14 Print বিভাগে, NR এর পাশে, FNR লিখুন। এন্টার টিপুন।
08:21 আমরা এখন সঠিক আউটপুট পাই। FNR নতুন ফাইল সহ শূন্যতে সেট করা হয়েছে তবে NR বাড়ছে।
08:31 এখন অন্য কিছু বিল্ট ইন ভ্যারিয়েবল দেখি। FILENAME ভ্যারিয়েবল পড়া ফাইলের নাম দেয়।
08:40 ARGC কমান্ড লাইনে প্রদত্ত আর্গুমেন্টগুলির সংখ্যা নির্দিষ্ট করে।
08:46 ARGV একটি অ্যারে প্রতিনিধিত্ব করে যা কমান্ড লাইন আর্গুমেন্ট সংরক্ষণ করে।
08:52 ENVIRON শেল এনভায়রনমেন্ট ভ্যারিয়েবল এবং সংশ্লিষ্ট ভ্যালুর অ্যারে নির্দিষ্ট করে।
09:00 যেহেতু ARGV এবং ENVIRON, awk এ অ্যারে ব্যবহার করে, আমরা পরবর্তী টিউটোরিয়ালে সেগুলি দেখবো।
09:09 এখন FILENAME ভ্যারিয়েবল দেখি। কিভাবে আমরা প্রক্রিয়াকৃত বর্তমান ফাইলের নাম প্রিন্ট করতে পারি?
09:18 টার্মিনালে যান এবং প্রদর্শিত কমান্ড লিখুন।
09:23 এখানে আমরা স্ট্রিং কনক্যাটেনেশন অপারেটর হিসাবে স্পেস ব্যবহার করেছি। কমান্ড এক্সিকিউট করতে Enter টিপুন।
09:32 আউটপুট একাধিক বার ফাইলের নাম দেখায়।
09:37 কারণ এই কমান্ড awkdemo.txt ফাইলে প্রতিটি সারির জন্য ফাইলের নাম একবার প্রিন্ট করে। কিভাবে আমরা শুধুমাত্র একবার এটি প্রিন্ট করতে পারি?
09:48 পূর্বে চালিত কমান্ড পেতে আপ অ্যারো কী টিপে টার্মিনাল মুছুন।
09:55 এখানে দেখানো আগের কমান্ড সংশোধন করুন। এন্টার টিপুন।
10:02 এখন, আমরা শুধুমাত্র একবার ফাইলের নাম পাই।
10:06 awk এ অন্য কিছু বিল্ট ইন ভ্যারিয়েবল রয়েছে। তাদের সম্পর্কে আরো জানতে ইন্টারনেট ব্রাউজ করুন।
10:14 ধরুন, আমরা সেই শিক্ষার্থীদের খুঁজতে চাই যারা পাস করেছে এবং স্টাইপেন্ড 8000 টাকার বেশী।
10:22 আউটপুট ফীল্ড সেপারেটর হিসাবে কমা ব্যবহার করুন এবং footer বিভাগে ফাইলের জন্য দেখানো তথ্য এবং ফাইলের নাম প্রিন্ট করতে পারি। এটি কিভাবে করতে পারি?
10:36 টার্মিনালে নিম্ন কমান্ড লিখুন। এন্টার টিপুন।
10:43 আমরা দেখি যে শুধুমাত্র একজন শিক্ষার্থী পাস করেছে এবং 8000 টাকার বেশী স্টাইপেন্ড পেয়েছে এবং রেকর্ড সংখ্যা হল 2.
10:53 আমরা footer এ পছন্দসই ফাইলের নাম দেখতে পারি।
10:58 আমরা জটিল কাজের জন্য awk ব্যবহার করতে পারি।
11:03 সেই ক্ষেত্রে, টার্মিনালে প্রতিবার কমান্ড লেখা আরো কঠিন হয়ে পড়ে।
11:09 এর বদলে আমরা একটি পৃথক ফাইলে awk প্রোগ্রাম লিখতে পারি।
11:14 এক্সিকিউটেবল হতে, সেই ফাইলের ডট awk এক্সটেনশন থাকতে হবে।
11:19 এক্সিকিউট করার সময়, আমরা শুধুমাত্র awk কমান্ড সহ এই awk প্রোগ্রাম ফাইলের নাম নির্দিষ্ট করতে পারি।
11:26 এটি করতে আমাদের হাইফেন ছোটহাতের f বিকল্প ব্যবহার করতে হবে। একটি উদাহরণ দেখি।
11:35 আমি ইতিমধ্যে একটি awk প্রোগ্রাম লিখে prog1 dot awk হিসাবে সংরক্ষণ করেছি।
11:42 এই কোড Code Files লিঙ্কেও উপলব্ধ।
11:46 টার্মিনালে যান। এক্সিকিউট করা কমান্ডের একক উদ্ধৃতিতে আমরা কি লিখেছি তা দেখুন?
11:55 prog1.awk ফাইলের বিষয়বস্তু ঠিক একই।
12:00 awk ফাইলে একমাত্র পার্থক্য হল আমরা একক উদ্ধৃতিতে লিখিনি।
12:07 ফাইলটি এক্সিকিউট করতে টার্মিনালে নিম্ন লিখুন, awk space hyphen small f space prog1.awk space awkdemo.txt এবং এন্টার টিপুন।
12:24 আমরা আগের মত একই আউটপুট পেয়েছি।
12:29 সুতরাং, এইভাবে আপনি awk প্রোগ্রাম লিখতে এবং এটি একাধিক বার ব্যবহার করতে পারেন।
12:35 এটি আমাদের টিউটোরিয়ালের শেষে নিয়ে আসে। সংক্ষিপ্তকরণ করি।
12:40 এখানে আমরা বিভিন্ন উদাহরণ দ্বারা বিল্ট ইন ভ্যারিয়েবল, awk স্ক্রিপ্ট সম্পর্কে শিখেছি।
12:48 অনুশীলনী হিসাবে- awkdemo.txt ফাইলে 5 তম লাইনের অন্তিম ফীল্ড প্রিন্ট করতে একটি awk স্ক্রিপ্ট লিখুন।
12:58 টার্মিনালে /etc/passwd সিস্টেম ফাইল খুলুন।
13:05 সেখানে সকল সেপারেটর সনাক্ত করুন।
13:09 এখন 20 তম লাইন থেকে ফাইল প্রক্রিয়া করতে একটি স্ক্রিপ্ট লিখুন।
13:15 সেটি শুধুমাত্র 6 টির অধিক ফীল্ড থাকা লাইনের জন্য।
13:20 আপনাকে সেই নির্দিষ্ট লাইনে লাইন সংখ্যা, সম্পূর্ণ লাইন এবং ফীল্ডের সংখ্যা গণনা করতে হবে।
13:28 নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি প্রকল্পকে সারসংক্ষেপ বোঝায়। এটি ডাউনলোড করে দেখুন।
13:36 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে। অনলাইন পরীক্ষা পাস করলে প্রশংসাপত্র দেয়। আরো বিস্তারিত জানতে আমাদের লিখুন।
13:47 এই ফোরামে আপনার টাইমড ক্যোয়ারী পোস্ট করুন।
13:51

স্পোকেন টিউটোরিয়াল প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত। এই মিশন সম্পর্কে আরো তথ্য এই লিঙ্কে প্রাপ্তিসাধ্য।

14:03 আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। অংশগ্রহনের জন্য ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta