Skip to main content

কিভাবে AWK কমান্ড এবং স্ক্রিপ্ট লিখুন

শেখা awk সংক্ষেপ লগ ফাইল এবং আইপি এন্ট্রি গণনা (জুন 2026)

শেখা awk সংক্ষেপ লগ ফাইল এবং আইপি এন্ট্রি গণনা (জুন 2026)
Anonim

Awk কমান্ড পাঠ্য ফাইলগুলিকে প্রক্রিয়াকরণ বা বিশ্লেষণ করার জন্য একটি শক্তিশালী পদ্ধতি-বিশেষ করে, তথ্য ফাইল যা লাইন (সারি) এবং কলাম দ্বারা সংগঠিত হয়।

সহজ awk আদেশ কমান্ড লাইন থেকে চালানো যাবে। আরো জটিল কাজগুলি একটি ফাইলে awk প্রোগ্রাম (তথাকথিত awk স্ক্রিপ্ট) হিসাবে লেখা উচিত।

একটি awk কমান্ডের মৌলিক বিন্যাস এই রকম দেখাচ্ছে:

awk 'প্যাটার্ন {action}' ইনপুট-ফাইল> আউটপুট-ফাইল

এর মানে হল: ইনপুট ফাইল প্রতিটি লাইন গ্রহণ; যদি লাইনটিতে প্যাটার্ন থাকে তবে লাইনের ক্রিয়াটি প্রয়োগ করুন এবং ফলাফল লাইনটি আউটপুট-ফাইলে লিখুন। যদি প্যাটার্ন বাদ দেওয়া হয়, কর্ম সব লাইন প্রয়োগ করা হয়। উদাহরণ স্বরূপ:

awk '{মুদ্রণ $ 5}' টেবিল 1.txt> output1.txt

এই বিবৃতিটি প্রতিটি লাইনের 5 ম কলামের উপাদানটি নেয় এবং আউটপুট ফাইল "output.txt" এ একটি লাইন হিসাবে এটি লিখে। পরিবর্তনশীল '$ 4' দ্বিতীয় কলাম বোঝায়। একইভাবে আপনি $ 1, $ 2, $ 3, ইত্যাদি সহ প্রথম, দ্বিতীয় এবং তৃতীয় কলামটি অ্যাক্সেস করতে পারেন। ডিফল্ট কলামগুলি স্পেস বা ট্যাব (তথাকথিত সাদা স্থান) দ্বারা আলাদা করা বলে মনে করা হয়। সুতরাং, যদি "table1.txt" ইনপুট ফাইলটি এই লাইনগুলি থাকে:

1, জাস্টিন টিম্বারল্যাক, শিরোনাম 545, মূল্য $ 7.302, টেলর সুইফ্ট, শিরোনাম 723, মূল্য $ 7.903, মিক জগার, শিরোনাম 610, মূল্য 7.90 ডলার4, লেডি গাগা, শিরোনাম 118, মূল্য $ 7.305, জনি ক্যাশ, শিরোনাম 482, মূল্য $ 6.506, এলভিস প্রিসলি, শিরোনাম 335, মূল্য $ 7.307, জন লেনন, শিরোনাম 271, মূল্য $ 7.908, মাইকেল জ্যাকসন, শিরোনাম 373, মূল্য 5.50 ডলার

তারপর কমান্ডটি "output1.txt" আউটপুট ফাইলটিতে নিম্নলিখিত লাইনগুলি লিখবে:

545,723,610,118,482,335,271,373,

যদি কলাম বিভাজকটি স্পেস বা ট্যাব ছাড়া অন্য কিছু, যেমন একটি কমা হিসাবে, আপনি নিম্নরূপ বিবর্জিত বিবৃতিতে উল্লেখ করতে পারেন:

awk -F, '{print $ 3}' table1.txt> output1.txt

যদি কলামগুলিকে কমা দ্বারা পৃথক করা বলে মনে করা হয় তবে এটি প্রতিটি লাইনের কলাম 3 থেকে উপাদানটি নির্বাচন করবে। অতএব আউটপুট, এই ক্ষেত্রে, হবে:

শিরোনাম 545 শিরোনাম 723 শিরোনাম 610 শিরোনাম 118 শিরোনাম 482 শিরোনাম 335 শিরোনাম 271 শিরোনাম 373

কোঁকড়া বন্ধনী ('{', '}') এর ভিতরে বিবৃতিগুলির তালিকাটিকে একটি ব্লক বলা হয়। যদি আপনি একটি ব্লকের সামনে একটি শর্তযুক্ত অভিব্যক্তি রাখেন, তবে শর্তটি সত্য হলে শুধুমাত্র ব্লকের অভ্যন্তরে থাকা বিবৃতিটি কার্যকর করা হবে।

awk '$ 7 == " $ 7.30" {মুদ্রণ $ 3}' table1.txt

এই ক্ষেত্রে, শর্ত $ 7 == " $ 7.30", যার অর্থ হল কলাম 7 এ উপাদানটি 7.30 ডলার সমান। ডলার সাইনের সামনে ব্যাকস্ল্যাশটি সিস্টেমটিকে পরিবর্তনশীল হিসাবে 7 ডলার ব্যাখ্যা করতে বাধা দেয় এবং এর পরিবর্তে ডলার সাইনটি আক্ষরিকভাবে নেয়।

তাই এই বেদনাপূর্ণ বিবৃতিটি প্রতিটি লাইনের তৃতীয় কলামে উপাদানটি প্রিন্ট করে, যার একটি কলাম 7 এ "$ 7.30" আছে।

আপনি শর্ত হিসাবে নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

awk '/ 30 / {মুদ্রণ $ 3}' table1.txt

দুটি স্ল্যাশ ('/') এর মধ্যে স্ট্রিং নিয়মিত অভিব্যক্তি। এই ক্ষেত্রে, এটি শুধুমাত্র স্ট্রিং "30." এর অর্থ হল যদি একটি রেখাটিতে "30" স্ট্রিং থাকে, তবে সিস্টেমটি সেই লাইনের তৃতীয় কলামে উপাদানটি প্রিন্ট করে। উপরের উদাহরণে আউটপুট হবে:

টিম্বারলেক, গাগা, প্রিসলি,

যদি টেবিল উপাদান সংখ্যাগুলি অজানা হয় তবে এই উদাহরণ হিসাবে তাদের উপর গণনা চালাতে পারে:

awk '{মুদ্রণ ($ 2 * $ 3) + $ 7}'

চলতি সারির ($ 1, $ 2, ইত্যাদি) উপাদানের অ্যাক্সেসের ভেরিয়েবলগুলির পাশাপাশি ভেরিয়েবল $ 0 যা সম্পূর্ণ সারি (লাইন), এবং ভেরিয়েবল এনএফ যা ক্ষেত্রের সংখ্যা ধারণ করে।

আপনি এই উদাহরণ হিসাবে নতুন ভেরিয়েবল সংজ্ঞায়িত করতে পারেন:

awk '{sum = 0; জন্য (col = 1; col <= NF; col ++) sum + = $ col; মুদ্রণ যোগফল } '

এটি প্রতিটি সারির সমস্ত উপাদানের সমষ্টি গণনা করে এবং মুদ্রণ করে।

Awk বিবৃতি ঘন ঘন কমান্ড সঙ্গে মিলিত হয়।