`Awk` কমান্ড ব্যবহার করে কিভাবে কলামের একটি পরিসীমা প্রিন্ট করবেন

How Print Range Columns Using Awk Command



`Awk` কমান্ড হল অনেকগুলি কমান্ডের মধ্যে একটি যা লিনাক্সে ট্যাবুলার ডেটা থেকে বিভিন্ন ধরণের কলাম প্রিন্ট করতে ব্যবহার করা যেতে পারে। `Awk` কমান্ডটি সরাসরি টার্মিনাল থেকে` awk` স্ক্রিপ্ট ফাইলটি ব্যবহার করে ব্যবহার করা যেতে পারে। এই টিউটোরিয়ালে, আমরা আপনাকে দেখাব কিভাবে ট্যাবুলার ডেটা থেকে কলামের একটি পরিসীমা প্রিন্ট করতে হয়।

উদাহরণ 1: একটি কমান্ড আউটপুট থেকে কলামের একটি পরিসীমা মুদ্রণ করুন

নিম্নলিখিত কমান্ডটি কমান্ড আউটপুট থেকে দ্বিতীয়, তৃতীয় এবং চতুর্থ কলাম মুদ্রণ করবে, 'Ls -l '। এখানে, কলাম সংখ্যাগুলি স্পষ্টভাবে বলা হয়েছে, কিন্তু একই পরিসরের কলামগুলি মুদ্রণের জন্য আরও কার্যকর কমান্ড পরবর্তী উদাহরণে দেখানো হয়েছে।







$ls -দ্য | awk '{মুদ্রণ $ 2, $ 3, $ 4}'

উপরের কমান্ড দ্বারা নিম্নলিখিত আউটপুট তৈরি করা হয়।





উদাহরণ 2: a ব্যবহার করে একটি ফাইল থেকে কলামের পরিসর মুদ্রণ করুন জন্য লুপ

এই টিউটোরিয়ালে এই উদাহরণ এবং অন্যান্য উদাহরণ সহ অনুসরণ করতে, নামযুক্ত একটি টেক্সট ফাইল তৈরি করুন marks.txt নিম্নলিখিত বিষয়বস্তু সহ :





আইডি CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

নিচের `awk` কমান্ড মার্কস txt এর প্রথম তিনটি কলাম প্রিন্ট করবে। দ্য জন্য কলামের মানগুলি মুদ্রণের জন্য লুপ ব্যবহার করা হয় এবং লুপটিতে তিনটি ধাপ রয়েছে। দ্য NF পরিবর্তনশীল ফাইলের মোট ক্ষেত্র বা কলামের সংখ্যা নির্দেশ করে।

$বিড়ালmarks.txt
$awk '{জন্য (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

কমান্ডটি চালানোর মাধ্যমে নিম্নলিখিত আউটপুট তৈরি করা হবে। আউটপুট ছাত্র দেখায় আইডি এবং জন্য চিহ্ন CSE203 এবং CSE102



উদাহরণ 3: শুরু এবং শেষ ভেরিয়েবল নির্ধারণ করে কলামের পরিসর মুদ্রণ করুন

নিম্নলিখিত 'awk' কমান্ডটি প্রারম্ভিকভাবে কমান্ড আউটপুট 'ls -l' থেকে প্রথম তিনটি কলাম মুদ্রণ করবে শুরু এবং শেষ ভেরিয়েবল এখানে, এর মান শুরু পরিবর্তনশীল 1, এবং এর মান শেষ ভেরিয়েবল হল 3. এই ভেরিয়েবলগুলি কলামের মানগুলি মুদ্রণের জন্য একটি লুপে পুনরাবৃত্তি হয়।

$ls -দ্য | awk 'শুরু {প্রথম = 1; শেষ = 3}
{for (i = first; i

কমান্ড চালানোর পর নিচের আউটপুট দেখা যাবে। আউটপুট আউটপুটের প্রথম তিনটি কলাম মান দেখায়, 'ls -l'।

উদাহরণ 4: বিন্যাস সহ একটি ফাইল থেকে কলামের একটি পরিসীমা মুদ্রণ করুন

নিম্নলিখিত `awk` কমান্ড এর প্রথম তিনটি কলাম প্রিন্ট করবে marks.txt ব্যবহার printf এবং আউটপুট ক্ষেত্র বিভাজক ( OFS )। এখানে, লুপের জন্য তিনটি ধাপ রয়েছে এবং ফাইল থেকে ক্রম অনুসারে তিনটি কলাম মুদ্রিত হবে। OFS এখানে কলামের মধ্যে স্থান যোগ করতে ব্যবহার করা হয়। যখন লুপের পাল্টা মান (i) সমান শেষ পরিবর্তনশীল, তারপর একটি নতুন লাইন ( n) উৎপন্ন হয়।

$বিড়ালmarks.txt
$awk -ভি শুরু= -ভি শেষ=3 '{for (i = start; i<=end;i++) printf('%s%s',
$ i, (i == শেষ)? ' n': OFS)} '
marks.txt

উপরের কমান্ডগুলি চালানোর পরে নিম্নলিখিত আউটপুট তৈরি হবে।

উদাহরণ 5: একটি শর্তাধীন বিবৃতি ব্যবহার করে একটি ফাইল থেকে কলামের পরিসর মুদ্রণ করুন

নিম্নলিখিত `awk` কমান্ডটি একটি ফাইল থেকে প্রথম এবং শেষ কলামগুলি একটি লুপ এবং একটি if স্টেটমেন্ট ব্যবহার করে মুদ্রণ করবে। এখানে, লুপের জন্য চারটি ধাপ রয়েছে। দ্য শুরু এবং শেষ if শর্ত ব্যবহার করে ফাইল থেকে দ্বিতীয় এবং তৃতীয় কলাম বাদ দেওয়ার জন্য স্ক্রিপ্টে ভেরিয়েবল ব্যবহার করা হয়। OFS ভেরিয়েবলটি কলামের মধ্যে স্থান যোগ করতে ব্যবহৃত হয় এবং ORS ভেরিয়েবলটি শেষ কলামটি প্রিন্ট করার পর একটি নতুন লাইন ( n) যোগ করতে ব্যবহৃত হয়।

$বিড়ালmarks.txt
$awk -ভি শুরু=2 -ভি শেষ=3 '{জন্য (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
অন্যথায় printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

উপরের কমান্ডগুলি চালানোর পরে নিম্নলিখিত আউটপুট প্রদর্শিত হবে। আউটপুট mark.txt এর প্রথম এবং শেষ কলাম দেখায়।

উদাহরণ 6: NF ভেরিয়েবল ব্যবহার করে একটি ফাইল থেকে কলামের পরিসর মুদ্রণ করুন

নিম্নলিখিত `awk` কমান্ডটি একটি NF ভেরিয়েবল ব্যবহার করে ফাইল থেকে প্রথম এবং শেষ কলামগুলি মুদ্রণ করবে। কলামের মান মুদ্রণের জন্য কোন লুপ বা শর্তাধীন বিবৃতি ব্যবহার করা হয় না। NF ক্ষেত্রের সংখ্যা নির্দেশ করে। Marks.txt এ চারটি কলাম আছে। $ (NF-3) প্রথম কলাম সংজ্ঞায়িত করে, এবং $ NF শেষ কলাম নির্দেশ করে।

$বিড়ালmarks.txt
$awk '{মুদ্রণ $ (NF-3)' '$ NF}'marks.txt

উপরের কমান্ডগুলি চালানোর মাধ্যমে নিম্নলিখিত আউটপুট তৈরি করা হয়। আউটপুট mark.txt এর প্রথম এবং শেষ কলাম দেখায়।

উদাহরণ 7: substr () এবং index () ব্যবহার করে একটি ফাইল থেকে কলামের পরিসীমা মুদ্রণ করুন

প্রথম আর্গুমেন্ট ভ্যালুতে দ্বিতীয় আর্গুমেন্ট মান থাকলে ইনডেক্স () ফাংশন একটি অবস্থান প্রদান করে। Substr () ফাংশন তিনটি যুক্তি নিতে পারে। প্রথম যুক্তিটি হল একটি স্ট্রিং মান, দ্বিতীয় যুক্তিটি হল শুরুর অবস্থান এবং তৃতীয় যুক্তিটি হল দৈর্ঘ্য। নিম্নোক্ত কমান্ডে substr () এর তৃতীয় যুক্তিটি বাদ দেওয়া হয়েছে। কারণ 'awk` কমান্ডে $ 1 থেকে কলাম শুরু হয়, index () ফাংশন $ 3 ফেরত দেবে এবং কমান্ড $ 3 থেকে $ 4 পর্যন্ত প্রিন্ট করবে।

$বিড়ালmarks.txt
$awk '{মুদ্রণ স্তর ($ 0, সূচক ($ 0, $ 3))}'marks.txt

উপরের কমান্ডগুলি চালানোর মাধ্যমে নিম্নলিখিত আউটপুট তৈরি করা হবে।

উদাহরণ 8: প্রিন্টফ ব্যবহার করে একটি ফাইল থেকে ক্রমানুসারে কলামের একটি পরিসর মুদ্রণ করুন

নিচের `awk` কমান্ডটি 10 ​​অক্ষরের জন্য পর্যাপ্ত স্থান নির্ধারণ করে mark.txt এর প্রথম, দ্বিতীয় এবং তৃতীয় কলাম মুদ্রণ করবে।

$বিড়ালmarks.txt
$awk '// {printf' %10s %10s %10s 10 n ', $ 1, $ 3, $ 2}'marks.txt

উপরের কমান্ডগুলি চালানোর মাধ্যমে নিম্নলিখিত আউটপুট তৈরি করা হবে।

উপসংহার

কমান্ড আউটপুট বা একটি ফাইল থেকে কলামের পরিসীমা প্রিন্ট করার বিভিন্ন উপায় রয়েছে। এই টিউটোরিয়ালটি দেখায় কিভাবে 'awk' কমান্ড লিনাক্স ব্যবহারকারীদের ট্যাবুলার ডেটা থেকে কন্টেন্ট প্রিন্ট করতে সাহায্য করতে পারে।