লিনাক্স অপারেটিং সিস্টেমে টেক্সট ডেটা বা ফাইল থেকে রিপোর্ট তৈরির জন্য অনেক ইউটিলিটি টুল বিদ্যমান। ব্যবহারকারী সহজে awk, grep এবং sed কমান্ড ব্যবহার করে অনেক ধরনের অনুসন্ধান, প্রতিস্থাপন এবং জেনারেটিং টাস্ক রিপোর্ট করতে পারেন। awk শুধু একটি আদেশ নয়। এটি একটি স্ক্রিপ্টিং ভাষা যা উভয় টার্মিনাল এবং awk ফাইল থেকে ব্যবহার করা যেতে পারে। এটি অন্যান্য স্ক্রিপ্টিং ভাষার মত পরিবর্তনশীল, শর্তাধীন বিবৃতি, অ্যারে, লুপ ইত্যাদি সমর্থন করে। এটি যেকোনো ফাইলের বিষয়বস্তু লাইন দ্বারা পড়তে পারে এবং একটি নির্দিষ্ট সীমাবদ্ধতার উপর ভিত্তি করে ক্ষেত্র বা কলামগুলি পৃথক করতে পারে। এটি পাঠ্য বিষয়বস্তু বা ফাইলে নির্দিষ্ট স্ট্রিং অনুসন্ধানের জন্য নিয়মিত অভিব্যক্তি সমর্থন করে এবং যদি কোনও মিল পাওয়া যায় তবে পদক্ষেপ নেয়। আপনি কিভাবে awk কমান্ড এবং স্ক্রিপ্ট ব্যবহার করতে পারেন তা 20 টি দরকারী উদাহরণ ব্যবহার করে এই টিউটোরিয়ালে দেখানো হয়েছে।
বিষয়বস্তু:
- printf সঙ্গে awk
- সাদা জায়গায় বিভক্ত করার জন্য awk
- ডিলিমিটার পরিবর্তন করার জন্য awk
- ট্যাব-সীমাবদ্ধ ডেটা সহ awk
- csv ডেটা সহ awk
- awk regex
- awk ক্ষেত্রে সংবেদনশীল regex
- এনএফ (ক্ষেত্রের সংখ্যা) ভেরিয়েবলের সাথে awk
- awk gensub () ফাংশন
- র্যান্ড () ফাংশন সহ awk
- awk ব্যবহারকারী সংজ্ঞায়িত ফাংশন
- আচ্ছা যদি
- awk ভেরিয়েবল
- awk অ্যারে
- awk লুপ
- awk প্রথম কলাম মুদ্রণ করতে
- awk শেষ কলাম প্রিন্ট করতে
- grep সঙ্গে awk
- ব্যাশ স্ক্রিপ্ট ফাইলের সাথে awk
- sed সঙ্গে awk
Printf এর সাথে awk ব্যবহার করা
printf () বেশিরভাগ প্রোগ্রামিং ভাষায় যেকোন আউটপুট ফরম্যাট করতে ফাংশন ব্যবহার করা হয়। এই ফাংশনটি ব্যবহার করা যেতে পারে awk বিভিন্ন ধরনের ফরম্যাট আউটপুট উৎপন্ন করার কমান্ড। awk কমান্ড প্রধানত কোন টেক্সট ফাইলের জন্য ব্যবহৃত হয়। নামে একটি টেক্সট ফাইল তৈরি করুন employee.txt নীচে দেওয়া বিষয়বস্তুর সাথে যেখানে ক্ষেত্রগুলি ট্যাব (' t') দ্বারা পৃথক করা হয়েছে।
employee.txt
1001 জন সেনা 40000
1002 জাফর ইকবাল 60000
1003 মেহের নিগার 30000
1004 জনি লিভার 70000
নিম্নলিখিত awk কমান্ড থেকে ডেটা পড়বে employee.txt লাইন দ্বারা লাইন ফাইল করুন এবং বিন্যাসের পরে প্রথম দায়ের করা মুদ্রণ করুন। এখানে, %10s n মানে আউটপুট 10 অক্ষর দীর্ঘ হবে। যদি আউটপুটের মান 10 অক্ষরের কম হয় তাহলে ভ্যালুটির সামনে স্পেস যোগ করা হবে।
$ awk'{printf'%10sn', $ 1}'কর্মচারীtxt
আউটপুট:
সাদা জায়গায় বিভক্ত করার জন্য awk
যে কোনো টেক্সট বিভক্ত করার জন্য ডিফল্ট শব্দ বা ক্ষেত্র বিভাজক হল সাদা স্থান। awk কমান্ড বিভিন্ন উপায়ে ইনপুট হিসাবে পাঠ্য মান নিতে পারে। থেকে ইনপুট পাঠ্য পাস করা হয় বের করে দিল নিম্নলিখিত উদাহরণে কমান্ড। লেখা, ' আমি প্রোগ্রামিং পছন্দ করি 'ডিফল্ট বিভাজক দ্বারা বিভক্ত করা হবে, স্থান , এবং তৃতীয় শব্দটি আউটপুট হিসাবে মুদ্রিত হবে।
$বের করে দিল 'আমি প্রোগ্রামিং পছন্দ করি' | awk '{মুদ্রণ $ 3}'আউটপুট:
ডিলিমিটার পরিবর্তন করার জন্য awk
awk কমান্ড যে কোন ফাইলের বিষয়বস্তুর জন্য ডিলিমিটার পরিবর্তন করতে ব্যবহার করা যেতে পারে। ধরুন, আপনার নামে একটি টেক্সট ফাইল আছে phone.txt নিম্নলিখিত বিষয়বস্তুর সাথে যেখানে ':' ফাইল সামগ্রীর ক্ষেত্র বিভাজক হিসাবে ব্যবহৃত হয়।
phone.txt
+123: 334: 889: 778+880: 1855: 456: 907
+9: 7777: 38644: 808
ডিলিমিটার পরিবর্তন করতে নিম্নলিখিত awk কমান্ডটি চালান, ':' দ্বারা '-' ফাইলের বিষয়বস্তুতে, phone.txt ।
$ cat phone.txt$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt
আউটপুট:
ট্যাব-সীমাবদ্ধ ডেটা সহ awk
awk কমান্ডের অনেকগুলি অন্তর্নির্মিত ভেরিয়েবল রয়েছে যা বিভিন্ন উপায়ে পাঠ্য পড়তে ব্যবহৃত হয়। তাদের মধ্যে দুজন হলেন এফএস এবং OFS । এফএস ইনপুট ক্ষেত্র বিভাজক এবং OFS আউটপুট ক্ষেত্র বিভাজক ভেরিয়েবল। এই ভেরিয়েবলের ব্যবহার এই বিভাগে দেখানো হয়েছে। একটা তৈরি কর ট্যাব পৃথক ফাইল নামে input.txt এর ব্যবহার পরীক্ষা করার জন্য নিম্নলিখিত সামগ্রী সহ এফএস এবং OFS ভেরিয়েবল
Input.txt
ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ভাষাসার্ভার-সাইড স্ক্রিপ্টিং ল্যাঙ্গুয়েজ
ডাটাবেস সার্ভার
ওয়েব সার্ভার
ট্যাবের সাথে FS ভেরিয়েবল ব্যবহার করা
নিম্নলিখিত কমান্ডটি প্রতিটি লাইনকে বিভক্ত করবে input.txt ট্যাবের উপর ভিত্তি করে ফাইল (' t') এবং প্রতিটি লাইনের প্রথম ক্ষেত্র মুদ্রণ করুন।
$awk '{মুদ্রণ $ 1}' এফএস=' টি'input.txtআউটপুট:
ট্যাবের সাথে OFS ভেরিয়েবল ব্যবহার করা
নিম্নলিখিত awk কমান্ড প্রিন্ট করবে 9ম এবং 5ম এর ক্ষেত্র 'এলএস -এল' কলামের শিরোনাম মুদ্রণের পর ট্যাব বিভাজক সহ কমান্ড আউটপুট নাম এবং সাইজ । এখানে, OFS পরিবর্তনশীল একটি ট্যাব দ্বারা আউটপুট ফরম্যাট করতে ব্যবহৃত হয়।
$ls -দ্য$ls -দ্য | awk -ভি OFS=' টি' 'শুরু করুন {printf'%s t%s n ',' Name ',' Size '} {print $ 9, $ 5}'
আউটপুট:
সিএসভি ডেটা সহ অদ্ভুত
যে কোন CSV ফাইলের বিষয়বস্তু awk কমান্ড ব্যবহার করে একাধিক উপায়ে পার্স করা যায়। 'নামে একটি CSV ফাইল তৈরি করুন customerr.csv 'Awk কমান্ড প্রয়োগ করতে নিম্নলিখিত বিষয়বস্তু সহ।
customerr.txt
আইডি, নাম, ইমেইল, ফোন1, সোফিয়া, [ইমেল সুরক্ষিত], (862) 478-7263
2, অ্যামেলিয়া, [ইমেল সুরক্ষিত], (530) 764-8000
3, এমা, [ইমেল সুরক্ষিত], (542) 986-2390
CSV ফাইলের একক ক্ষেত্র পড়া
'-এফ' ফাইলের প্রতিটি লাইন বিভক্ত করার জন্য ডিলিমিটার সেট করতে awk কমান্ড দিয়ে অপশনটি ব্যবহার করা হয়। নিম্নলিখিত awk কমান্ড প্রিন্ট করবে নাম ক্ষেত্র গ্রাহক। csv ফাইল
$বিড়ালcustomerr.csv$awk -এফ ',' '{মুদ্রণ $ 2}'customerr.csv
আউটপুট:
অন্যান্য পাঠ্যের সাথে মিলিয়ে একাধিক ক্ষেত্র পড়া
নিম্নলিখিত কমান্ড তিনটি ক্ষেত্র মুদ্রণ করবে customerr.csv শিরোনাম পাঠ্য একত্রিত করে, নাম, ইমেইল এবং ফোন । এর প্রথম লাইন customerr.csv ফাইলটিতে প্রতিটি ক্ষেত্রের শিরোনাম রয়েছে। না ভেরিয়েবল ফাইলের লাইন নম্বর ধারণ করে যখন awk কমান্ড ফাইলটি পার্স করে। এই উদাহরণে, এনআর ফাইলের প্রথম লাইন বাদ দিতে ভেরিয়েবল ব্যবহার করা হয়। আউটপুট 2 দেখাবেnd, 3rdএবং 4মপ্রথম লাইন ছাড়া সব লাইনের ক্ষেত্র।
$awk -এফ ',' 'NR> 1 {মুদ্রণ' নাম: '$ 2', ইমেল: '$ 3', ফোন: '$ 4}'customerr.csvআউটপুট:
একটি awk স্ক্রিপ্ট ব্যবহার করে CSV ফাইল পড়া
awk স্ক্রিপ্ট awk ফাইল চালানোর মাধ্যমে চালানো যেতে পারে। আপনি কিভাবে awk ফাইল তৈরি করতে পারেন এবং ফাইলটি চালাতে পারেন তা এই উদাহরণে দেখানো হয়েছে। নামে একটি ফাইল তৈরি করুন awkcsv.awk নিম্নলিখিত কোড সহ। শুরু স্ক্রিপ্ট চালানোর জন্য awk কমান্ডকে অবহিত করার জন্য স্ক্রিপ্টে কীওয়ার্ড ব্যবহার করা হয় শুরু অন্যান্য কাজ সম্পাদনের আগে প্রথম অংশ। এখানে, ক্ষেত্র বিভাজক ( এফএস ) বিভাজক ডিলিমিটার এবং 2 সংজ্ঞায়িত করতে ব্যবহৃত হয়ndএবং 1সেন্টprintf () ফাংশনে ব্যবহৃত বিন্যাস অনুযায়ী ক্ষেত্রগুলি মুদ্রিত হবে।
awkcsv।awkশুরু{এফএস= ','} { printf '% 5s (% s)n',$2,$ঘ}
দৌড় awkcsv.awk এর বিষয়বস্তু সহ ফাইল গ্রাহক। csv নিম্নলিখিত কমান্ড দ্বারা ফাইল করুন।
$awk -ফawkcsv.awk customer.csvআউটপুট:
awk regex
রেগুলার এক্সপ্রেশন হল একটি প্যাটার্ন যা টেক্সটের যেকোন স্ট্রিং অনুসন্ধান করতে ব্যবহৃত হয়। বিভিন্ন ধরণের জটিল অনুসন্ধান এবং প্রতিস্থাপনের কাজগুলি নিয়মিত অভিব্যক্তি ব্যবহার করে খুব সহজেই করা যায়। Awk কমান্ড সহ রেগুলার এক্সপ্রেশনের কিছু সহজ ব্যবহার এই বিভাগে দেখানো হয়েছে।
মিলে যাওয়া চরিত্রসেটনিচের কমান্ডটি শব্দের সাথে মিলবে বোকা বা বুল অথবা কুল ইনপুট স্ট্রিং সহ এবং যদি শব্দটি পাওয়া যায় তবে মুদ্রণ করুন। এখানে, পুতুল মিলবে না এবং ছাপবে না।
$printf 'মূর্খnকুলnপুতুলnবুল ' | awk '/[FbC] ool/'আউটপুট:
লাইনের শুরুতে স্ট্রিং সার্চ করা হচ্ছে
'^' রেগুলার এক্সপ্রেশনে প্রতীকটি লাইনের শুরুতে কোন প্যাটার্ন অনুসন্ধান করতে ব্যবহৃত হয়। ' লিনাক্স ’ নিম্নলিখিত উদাহরণে পাঠ্যের প্রতিটি লাইনের শুরুতে শব্দটি অনুসন্ধান করা হবে। এখানে, দুটি লাইন পাঠ্য দিয়ে শুরু হয়, 'লিনাক্স 'এবং সেই দুটি লাইন আউটপুটে দেখানো হবে।
$বের করে দিল -এবং 'লিনাক্স বিনামূল্যে ব্যবহার করা যায়nএটি একটি ওপেন সোর্স সফটওয়্যারnলিনাক্সহিন্ট হলএকটি জনপ্রিয় ব্লগ সাইট ' | awk '/^লিনাক্স/'
আউটপুট:
লাইনের শেষে স্ট্রিং সার্চ করা হচ্ছে
'$' প্রতীকটি নিয়মিত অভিব্যক্তিতে পাঠ্যের প্রতিটি লাইনের শেষে কোন প্যাটার্ন অনুসন্ধান করতে ব্যবহৃত হয়। ' লিপি 'শব্দটি নিম্নলিখিত উদাহরণে অনুসন্ধান করা হয়েছে। এখানে, দুটি লাইনে শব্দটি রয়েছে, লিপি লাইনের শেষে।
$বের করে দিল -এবং 'পিএইচপি স্ক্রিপ্টnজাভাস্ক্রিপ্টnভিজ্যুয়াল প্রোগ্রামিং ' | awk '/স্ক্রিপ্ট $/'আউটপুট:
নির্দিষ্ট অক্ষর সেট বাদ দিয়ে অনুসন্ধান করা হচ্ছে
'^' প্রতীকটি পাঠ্যের শুরু নির্দেশ করে যখন এটি কোন স্ট্রিং প্যাটার্নের সামনে ব্যবহার করা হয় (‘ / ^… /’) অথবা দ্বারা ঘোষিত কোনো চরিত্র সেট করার আগে […] । যদি '^' প্রতীকটি তৃতীয় বন্ধনীতে ব্যবহার করা হয়, [^…] তারপর বন্ধনীটির ভিতরে নির্ধারিত অক্ষরটি অনুসন্ধানের সময় বাদ দেওয়া হবে। নিম্নলিখিত কমান্ডটি এমন কোন শব্দ অনুসন্ধান করবে যা দিয়ে শুরু হচ্ছে না 'এফ' কিন্তু শেষ হচ্ছে ' ool '। কুল এবং বুল প্যাটার্ন এবং টেক্সট ডেটা অনুযায়ী প্রিন্ট করা হবে।
$ printf 'মূর্খnকুলnপুতুলnবুল ' |awk' / [^ F] ool /'আউটপুট:
awk ক্ষেত্রে সংবেদনশীল regex
ডিফল্টরূপে, রেগুলার এক্সপ্রেশন কেস সংবেদনশীল অনুসন্ধান করে যখন স্ট্রিংয়ে কোন প্যাটার্ন সার্চ করে। নিয়মিত অভিব্যক্তির সাথে awk কমান্ডের মাধ্যমে কেস সংবেদনশীল অনুসন্ধান করা যেতে পারে। নিম্নলিখিত উদাহরণে, টোলার () কেস সংবেদনশীল অনুসন্ধান করতে ফাংশন ব্যবহার করা হয়। এখানে, ইনপুট পাঠ্যের প্রতিটি লাইনের প্রথম শব্দটি ব্যবহার করে লোয়ার কেসে রূপান্তরিত হবে টোলার () ফাংশন এবং রেগুলার এক্সপ্রেশন প্যাটার্নের সাথে মেলে। টপার () এই উদ্দেশ্যে ফাংশনটিও ব্যবহার করা যেতে পারে, এই ক্ষেত্রে, প্যাটার্নটি সমস্ত মূলধন দ্বারা সংজ্ঞায়িত করা আবশ্যক। নিম্নলিখিত উদাহরণে সংজ্ঞায়িত পাঠ্যটিতে অনুসন্ধান শব্দ রয়েছে, 'ওয়েব 'দুটি লাইনে যা আউটপুট হিসাবে মুদ্রিত হবে।
$বের করে দিল -এবং 'ওয়েব ডিজাইনnওয়েব ডেভেলপমেন্টnফ্রেমওয়ার্ক ' | awk 'টোলওয়ার ($ 0) ~ /^ওয়েব /;'আউটপুট:
NF (ক্ষেত্রের সংখ্যা) ভেরিয়েবলের সাথে awk
NF awk কমান্ডের একটি অন্তর্নির্মিত পরিবর্তনশীল যা ইনপুট পাঠ্যের প্রতিটি লাইনে ক্ষেত্রের মোট সংখ্যা গণনা করতে ব্যবহৃত হয়। একাধিক লাইন এবং একাধিক শব্দ দিয়ে যেকোনো টেক্সট ফাইল তৈরি করুন। input.txt ফাইলটি এখানে ব্যবহার করা হয়েছে যা পূর্ববর্তী উদাহরণে তৈরি করা হয়েছে।
কমান্ড লাইন থেকে NF ব্যবহার করা
এখানে, প্রথম কমান্ডটি এর বিষয়বস্তু প্রদর্শন করতে ব্যবহৃত হয় input.txt ফাইল এবং দ্বিতীয় কমান্ড ব্যবহার করে ফাইলের প্রতিটি লাইনে মোট ক্ষেত্রের সংখ্যা দেখানোর জন্য ব্যবহার করা হয় NF পরিবর্তনশীল
$ cat input.txt$ awk '{print NF}' input.txt
আউটপুট:
Awk ফাইলে NF ব্যবহার করা
নামে একটি awk ফাইল তৈরি করুন count.awk নীচে দেওয়া স্ক্রিপ্ট সহ। যখন এই স্ক্রিপ্টটি কোন টেক্সট ডেটার সাথে এক্সিকিউট হবে তখন মোট ফিল্ড সহ প্রতিটি লাইনের কন্টেন্ট আউটপুট হিসেবে প্রিন্ট করা হবে।
count.awk
{$ মুদ্রণ করুন0}{ছাপা'[মোট ক্ষেত্র:'NF']'}
নিম্নলিখিত কমান্ড দ্বারা স্ক্রিপ্ট চালান।
$awk -ফcount.awk input.txtআউটপুট:
awk gensub () ফাংশন
getub () একটি প্রতিস্থাপন ফাংশন যা নির্দিষ্ট ডিলিমিটার বা রেগুলার এক্সপ্রেশন প্যাটার্নের উপর ভিত্তি করে স্ট্রিং অনুসন্ধান করতে ব্যবহৃত হয়। এই ফাংশনটি সংজ্ঞায়িত করা হয়েছে 'গক' প্যাকেজ যা ডিফল্টভাবে ইনস্টল করা হয় না। এই ফাংশনের সিনট্যাক্স নিচে দেওয়া হল। প্রথম প্যারামিটারে রয়েছে রেগুলার এক্সপ্রেশন প্যাটার্ন বা সার্চ ডিলিমিটার, দ্বিতীয় প্যারামিটারে আছে রিপ্লেসমেন্ট টেক্সট, তৃতীয় প্যারামিটার নির্দেশ করে কিভাবে সার্চ করা হবে এবং শেষ প্যারামিটারে লেখা আছে যেখানে এই ফাংশনটি প্রয়োগ করা হবে।
বাক্য গঠন:
জেনসব(regexp, প্রতিস্থাপন, কিভাবে[, লক্ষ্য])ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান গক ব্যবহারের জন্য প্যাকেজ getub () awk কমান্ড দিয়ে কাজ করুন।
$ sudo apt-get gawk ইনস্টল করুন'নামে একটি টেক্সট ফাইল তৈরি করুন salesinfo.txt এই উদাহরণটি অনুশীলনের জন্য নিম্নলিখিত বিষয়বস্তু সহ। এখানে, ক্ষেত্রগুলি একটি ট্যাব দ্বারা পৃথক করা হয়েছে।
salesinfo.txt
আমার 700000আপনার 800000
বুধ 750000
200000 সংগ্রহ করুন
শুক্র 430000
শনি 820000
এর সাংখ্যিক ক্ষেত্রগুলি পড়তে নিম্নলিখিত কমান্ডটি চালান salesinfo.txt সমস্ত বিক্রয় পরিমাণের ফাইল এবং মুদ্রণ করুন। এখানে, তৃতীয় প্যারামিটার, 'জি' বিশ্বব্যাপী অনুসন্ধান নির্দেশ করে। তার মানে ফাইলের সম্পূর্ণ বিষয়বস্তুতে প্যাটার্নটি অনুসন্ধান করা হবে।
$awk '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} শেষ {print 0} 'salesinfo.txt| খ -দ্যআউটপুট:
র্যান্ড () ফাংশন সহ awk
সারি () ফাংশনটি 0 এর চেয়ে বড় এবং 1 এর চেয়ে ছোট যেকোনো এলোমেলো সংখ্যা উৎপন্ন করতে ব্যবহৃত হয়। 1. দশমিক বিন্দুর পর দুই অঙ্কের একটি ভগ্নাংশ সংখ্যা printf () ফাংশন প্রয়োগের জন্য মুদ্রিত হবে। আপনি যদি নিম্নলিখিত কমান্ডটি একাধিকবার চালান তাহলে প্রতিবার আপনি বিভিন্ন আউটপুট পাবেন।
$awk 'BEGIN {printf' সংখ্যা হল =%। 2f n ', রান্ড ()*10}'আউটপুট:
awk ব্যবহারকারী সংজ্ঞায়িত ফাংশন
পূর্ববর্তী উদাহরণগুলিতে ব্যবহৃত সমস্ত ফাংশন অন্তর্নির্মিত ফাংশন। কিন্তু আপনি কোন বিশেষ কাজ করতে আপনার awk স্ক্রিপ্টে একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন ঘোষণা করতে পারেন। ধরুন, আপনি একটি আয়তক্ষেত্রের ক্ষেত্রফল গণনা করার জন্য একটি কাস্টম ফাংশন তৈরি করতে চান। এই কাজটি করতে, 'নামে একটি ফাইল তৈরি করুন এলাকা 'নিম্নলিখিত স্ক্রিপ্ট সহ। এই উদাহরণে, একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন নামে এলাকা () স্ক্রিপ্টে ঘোষিত হয় যা ইনপুট পরামিতিগুলির উপর ভিত্তি করে এলাকা গণনা করে এবং এলাকার মান প্রদান করে। গেটলাইন ব্যবহারকারীর কাছ থেকে ইনপুট নিতে এখানে কমান্ড ব্যবহার করা হয়।
এলাকা
# এলাকা গণনা করুনফাংশনএলাকা(উচ্চতা,প্রস্থ){
প্রত্যাবর্তনউচ্চতা*প্রস্থ
}
# এক্সিকিউশন শুরু করে
শুরু{
ছাপা'উচ্চতার মান লিখুন:'
গেটলাইন জ< '-'
ছাপা'প্রস্থের মান লিখুন:'
গেটলাইন w< '-'
ছাপা'এলাকা ='এলাকা(জ,ভিতরে)
}
স্ক্রিপ্ট চালান।
$awk -ফএলাকাআউটপুট:
awk যদি উদাহরণ
awk অন্যান্য স্ট্যান্ডার্ড প্রোগ্রামিং ভাষার মত শর্তাধীন বিবৃতি সমর্থন করে। তিনটি উদাহরণ ব্যবহার করে এই বিভাগে তিন ধরনের if স্টেটমেন্ট দেখানো হয়। নামে একটি টেক্সট ফাইল তৈরি করুন items.txt নিম্নলিখিত বিষয়বস্তু সহ।
items.txt
এইচডিডি স্যামসাং $ 100মাউস A4Tech
প্রিন্টার এইচপি $ 200
উদাহরণ দিলে সহজ :
তিনি নিম্নলিখিত কমান্ডের বিষয়বস্তু পড়বেন items.txt ফাইল এবং চেক করুন 3rd প্রতিটি লাইনে ক্ষেত্রের মান। যদি মানটি খালি থাকে তবে এটি লাইন নম্বর সহ একটি ত্রুটি বার্তা মুদ্রণ করবে।
$awk '{যদি ($ 3 ==' ') মুদ্রণ' মূল্য ক্ষেত্র 'NR}' লাইনে অনুপস্থিতitems.txtআউটপুট:
if-else উদাহরণ:
নিচের কমান্ডটি আইটেমের মূল্য প্রিন্ট করবে যদি 3rdক্ষেত্রটি লাইনে বিদ্যমান, অন্যথায়, এটি একটি ত্রুটি বার্তা মুদ্রণ করবে।
$ awk'{যদি ($ 3 ==' ') মুদ্রণ' মূল্য ক্ষেত্র অনুপস্থিত 'অন্যথায় মুদ্রণ করুন 'আইটেম মূল্য' $ 3} 'আইটেমtxt
আউটপুট:
if-else-if example:
যখন নিম্নলিখিত কমান্ড টার্মিনাল থেকে চালানো হবে তখন এটি ব্যবহারকারীর কাছ থেকে ইনপুট নেবে। শর্তটি সত্য না হওয়া পর্যন্ত শর্ত থাকলে ইনপুট মান প্রত্যেকের সাথে তুলনা করা হবে। যদি কোন শর্ত সত্য হয় তবে এটি সংশ্লিষ্ট গ্রেড মুদ্রণ করবে। যদি ইনপুট মান কোন শর্তের সাথে মেলে না তবে এটি মুদ্রণ ব্যর্থ হবে।
$awk 'BEGIN {print' চিহ্নটি প্রবেশ করান: 'গেটলাইন চিহ্ন<'-'
যদি (চিহ্ন> = 90) 'A+' মুদ্রণ করুন
অন্যথায় যদি (চিহ্ন> = 80) 'এ' মুদ্রণ করুন
অন্যথায় যদি (চিহ্ন> = 70) 'B+' মুদ্রণ করুন
অন্যথায় 'ব্যর্থ' প্রিন্ট করুন
আউটপুট:
awk ভেরিয়েবল
Awk ভেরিয়েবলের ঘোষণা শেল ভেরিয়েবলের ঘোষণার অনুরূপ। ভেরিয়েবলের মান পড়ার পার্থক্য আছে। মান পড়ার জন্য শেল ভেরিয়েবলের পরিবর্তনশীল নামের সাথে '$' চিহ্ন ব্যবহার করা হয়। কিন্তু মান পড়ার জন্য awk ভেরিয়েবলের সাথে '$' ব্যবহার করার দরকার নেই।
সহজ পরিবর্তনশীল ব্যবহার করে:
নিচের কমান্ডটি একটি ভেরিয়েবল নামে ঘোষণা করবে 'সাইট' এবং একটি স্ট্রিং মান যে পরিবর্তনশীল বরাদ্দ করা হয়। চলকের মান পরবর্তী বিবৃতিতে মুদ্রিত হয়।
$awk 'BEGIN {site =' LinuxHint.com '; প্রিন্ট সাইট} 'আউটপুট:
একটি ফাইল থেকে তথ্য পুনরুদ্ধারের জন্য একটি পরিবর্তনশীল ব্যবহার করে
নিচের কমান্ডটি শব্দটি অনুসন্ধান করবে 'প্রিন্টার' ফাইলে items.txt । যদি ফাইলের কোন লাইন দিয়ে শুরু হয় 'প্রিন্টার 'তাহলে এটি এর মান সংরক্ষণ করবে ঘসেন্ট , 2nd এবং 3rd তিনটি ভেরিয়েবলের মধ্যে ক্ষেত্র। নাম এবং মূল্য ভেরিয়েবল প্রিন্ট করা হবে।
$ awk'/ প্রিন্টার/ {নাম = $ 1; ব্র্যান্ড = $ 2; মূল্য = $ 3; মুদ্রণ' আইটেম নাম = 'নাম;'আইটেমের মূল্য =' মূল্য} 'মুদ্রণ করুনআইটেমtxt
আউটপুট:
awk অ্যারে
সংখ্যাসূচক এবং সংশ্লিষ্ট অ্যারে উভয়ই awk এ ব্যবহার করা যেতে পারে। Awk এ অ্যারে ভেরিয়েবল ডিক্লারেশন অন্যান্য প্রোগ্রামিং ভাষার সমান। অ্যারের কিছু ব্যবহার এই বিভাগে দেখানো হয়েছে।
সহযোগী অ্যারে:
অ্যারের ইনডেক্স অ্যাসোসিয়েটিভ অ্যারের জন্য যেকোন স্ট্রিং হবে। এই উদাহরণে, তিনটি উপাদানের একটি সহযোগী অ্যারে ঘোষণা এবং মুদ্রিত হয়।
$awk 'শুরু {বই ['ওয়েব ডিজাইন'] = 'HTML 5 শেখা';
বই ['ওয়েব প্রোগ্রামিং'] = 'পিএইচপি এবং মাইএসকিউএল'
বই ['পিএইচপি ফ্রেমওয়ার্ক'] = 'লারাভেল 5 শেখা'
printf '%s n%s n%s n', বই ['ওয়েব ডিজাইন'], বই ['ওয়েব প্রোগ্রামিং'],
বই ['পিএইচপি ফ্রেমওয়ার্ক']} '
আউটপুট:
সংখ্যাসূচক অ্যারে:
তিনটি উপাদানের একটি সংখ্যাসূচক অ্যারে ঘোষণা করা হয় এবং ট্যাব আলাদা করে মুদ্রিত হয়।
$ awk'শুরু {সংখ্যা [0] = 80;
সংখ্যা [1] = 55;
সংখ্যা [2] = 76;
# অ্যারে উপাদানগুলি মুদ্রণ করুন
printf 'অ্যারে মান: %d। টি%d। টি%dn', সংখ্যা [0], সংখ্যা [1], সংখ্যা [2]; } '
আউটপুট:
awk লুপ
তিন ধরনের লুপ awk দ্বারা সমর্থিত। তিনটি উদাহরণ ব্যবহার করে এই লুপগুলির ব্যবহার এখানে দেখানো হয়েছে।
যখন লুপ:
যখন নিম্নোক্ত কমান্ডে ব্যবহৃত লুপটি 5 বার পুনরাবৃত্তি করবে এবং ব্রেক স্টেটমেন্টের জন্য লুপ থেকে প্রস্থান করবে।
$ awk 'শুরু {n = 1; যখন (n 5) বিরতি; মুদ্রণ n; n ++}} 'আউটপুট:
লুপের জন্য:
নিম্নলিখিত awk কমান্ডে ব্যবহৃত লুপের জন্য 1 থেকে 10 পর্যন্ত যোগফল গণনা করা হবে এবং মানটি মুদ্রণ করা হবে।
$awk 'শুরু {যোগ = 0; জন্য (n = 1; n<= 10; n++) sum=sum+n; print sum }'আউটপুট:
Do-while লুপ:
নিম্নোক্ত কমান্ডের একটি করণ-সময় লুপ 10 থেকে 5 পর্যন্ত সমস্ত জোড় সংখ্যা মুদ্রণ করবে।
$awk 'শুরু {কাউন্টার = 10; do {if (counter%2 == 0) print counter; পাল্টা-}while (counter> 5)} '
আউটপুট:
awk প্রথম কলাম মুদ্রণ করতে
Awk- এ $ 1 ভেরিয়েবল ব্যবহার করে যেকোনো ফাইলের প্রথম কলাম প্রিন্ট করা যায়। কিন্তু যদি প্রথম কলামের মান একাধিক শব্দ ধারণ করে তবে প্রথম কলামের প্রথম শব্দটিই প্রিন্ট করে। একটি নির্দিষ্ট ডিলিমিটার ব্যবহার করে, প্রথম কলামটি সঠিকভাবে মুদ্রিত হতে পারে। নামে একটি টেক্সট ফাইল তৈরি করুন students.txt নিম্নলিখিত বিষয়বস্তু সহ। এখানে, প্রথম কলামে দুটি শব্দের পাঠ্য রয়েছে।
ছাত্র। Txt
কানিজ ফাতেমা 30মব্যাচআবির হোসেন 35মব্যাচ
জন আব্রাহাম 40মব্যাচ
কোন ডিলিমিটার ছাড়াই awk কমান্ড চালান। প্রথম কলামের প্রথম অংশ মুদ্রিত হবে।
$awk '{মুদ্রণ $ 1}'students.txtনিম্নলিখিত ডিলিমিটার দিয়ে awk কমান্ড চালান। প্রথম কলামের সম্পূর্ণ অংশ মুদ্রিত হবে।
$awk -এফ '\ s \ s' '{মুদ্রণ $ 1}'students.txtআউটপুট:
awk শেষ কলাম প্রিন্ট করতে
$ (NF) পরিবর্তনশীল কোন ফাইলের শেষ কলাম মুদ্রণ করতে ব্যবহার করা যেতে পারে। নিম্নলিখিত awk কমান্ডগুলি শেষ কলামের শেষ অংশ এবং সম্পূর্ণ অংশ মুদ্রণ করবে students.txt ফাইল
$awk '{মুদ্রণ $ (NF)}'students.txt$awk -এফ '\ s \ s' '{মুদ্রণ $ (NF)}'students.txt
আউটপুট:
grep সঙ্গে awk
grep হল লিনাক্সের আরেকটি দরকারী কমান্ড যে কোন রেগুলার এক্সপ্রেশন এর উপর ভিত্তি করে একটি ফাইলে বিষয়বস্তু অনুসন্ধান করা। কিভাবে awk এবং grep উভয় কমান্ড একসাথে ব্যবহার করা যায় তা নিচের উদাহরণে দেখানো হয়েছে। খপ্পর কমান্ডটি কর্মচারী আইডির তথ্য অনুসন্ধান করতে ব্যবহৃত হয়, ' 1002 'থেকে employee.txt ফাইল Grep কমান্ডের আউটপুট ইনপুট ডেটা হিসাবে awk এ পাঠানো হবে। কর্মচারী আইডির বেতনের উপর ভিত্তি করে 5% বোনাস গণনা এবং মুদ্রণ করা হবে, ‘ 1002 ' awk কমান্ড দ্বারা।
$বিড়ালemployee.txt$খপ্পর '1002'employee.txt| awk -এফ ' টি' '{মুদ্রণ $ 2' $ '($ 3*5)/100' বোনাস '} পাবে'
আউটপুট:
BASH ফাইলের সাথে awk
অন্যান্য লিনাক্স কমান্ডের মতো, awk কমান্ডটিও BASH স্ক্রিপ্টে ব্যবহার করা যেতে পারে। নামে একটি টেক্সট ফাইল তৈরি করুন customers.txt নিম্নলিখিত বিষয়বস্তু সহ। এই ফাইলের প্রতিটি লাইনে চারটি ক্ষেত্রের তথ্য রয়েছে। এগুলি হল গ্রাহকের আইডি, নাম, ঠিকানা এবং মোবাইল নম্বর যার দ্বারা আলাদা করা হয় '/ '।
customers.txt
AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Alabama / 256-671-7942CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, California / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Chicago, Illinois / 773-550-5107
নামে একটি ব্যাশ ফাইল তৈরি করুন item_search.bash নিম্নলিখিত স্ক্রিপ্ট সহ। এই স্ক্রিপ্ট অনুসারে, ব্যবহারকারীর কাছ থেকে রাষ্ট্রীয় মান নেওয়া হবে এবং অনুসন্ধান করা হবে customers.txt দ্বারা ফাইল খপ্পর কমান্ড এবং ইনপুট হিসাবে awk কমান্ডে পাস। Awk কমান্ড পড়বে 2nd এবং 4ম প্রতিটি লাইনের ক্ষেত্র। ইনপুট মান যদি কোন রাজ্যের মূল্যের সাথে মেলে customers.txt ফাইল তারপর এটি গ্রাহকের মুদ্রণ করবে নাম এবং মোবাইল নম্বর অন্যথায়, এটি বার্তাটি মুদ্রণ করবে কোন গ্রাহক পাওয়া যায়নি ।
item_search.bash
#!/বিন/ব্যাশবের করে দিল 'রাজ্যের নাম লিখুন:'
পড়ুনঅবস্থা
গ্রাহকরা='খপ্পর '$ state'customers.txt| awk -এফ '/' '{মুদ্রণ' গ্রাহকের নাম: '$ 2,',
মোবাইল নম্বর: '$ 4}''
যদি [ '$ গ্রাহক' !='' ];তারপর
বের করে দিল $ গ্রাহক
অন্য
বের করে দিল 'কোন গ্রাহক পাওয়া যায়নি'
থাকা
আউটপুট দেখানোর জন্য নিম্নলিখিত কমান্ডগুলি চালান।
$বিড়ালcustomers.txt$বাশitem_search.bash
আউটপুট:
sed সঙ্গে awk
লিনাক্সের আরেকটি দরকারী সার্চ টুল sed । এই কমান্ডটি যেকোনো ফাইলের পাঠ্য অনুসন্ধান এবং প্রতিস্থাপন উভয় ক্ষেত্রেই ব্যবহার করা যেতে পারে। নিম্নলিখিত উদাহরণটি awk কমান্ডের ব্যবহার দেখায় sed কমান্ড এখানে, sed কমান্ড সমস্ত কর্মচারীর নাম অনুসন্ধান করবে 'দিয়ে শুরু হবে জে এবং ইনপুট হিসাবে awk কমান্ডে পাস করে। awk কর্মচারী ছাপাবে নাম এবং আইডি বিন্যাস করার পরে।
$বিড়ালemployee.txt$sed -এন '/জে/পি'employee.txt| awk -এফ ' টি' '{printf'%s (%s) n ', $ 2, $ 1}'
আউটপুট:
উপসংহার:
সঠিকভাবে ডেটা ফিল্টার করার পর যেকোনো সারণী বা সীমাবদ্ধ ডেটার উপর ভিত্তি করে বিভিন্ন ধরনের রিপোর্ট তৈরি করতে আপনি awk কমান্ড ব্যবহার করতে পারেন। আশা করি, এই টিউটোরিয়ালে দেখানো উদাহরণগুলি অনুশীলনের পরে আপনি awk কমান্ড কীভাবে কাজ করে তা শিখতে সক্ষম হবেন।