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)
|
|
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 | আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। অংশগ্রহনের জন্য ধন্যবাদ। |