ফাইলের ক্ষেত্র এবং কলামগুলি মুদ্রণ করতে কীভাবে আওক ব্যবহার করবেন


আমাদের লিনাক্স আওক কমান্ড সিরিজের এই অংশে, আমরা আউকের সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির একটিতে নজর রাখব, যা ক্ষেত্র সম্পাদনা।

এটা জেনে রাখা ভাল যে আওক স্বয়ংক্রিয়ভাবে প্রদত্ত ইনপুট লাইনগুলিকে ক্ষেত্রগুলিতে ভাগ করে দেয় এবং কোনও ক্ষেত্রকে অক্ষরের একটি সেট হিসাবে সংজ্ঞায়িত করা যেতে পারে যা অভ্যন্তরীণ ক্ষেত্র বিভাজক দ্বারা অন্য ক্ষেত্রগুলি থেকে পৃথক করা হয়।

আপনি যদি ইউনিক্স/লিনাক্সের সাথে পরিচিত হন বা ব্যাশ শেল প্রোগ্রামিং করেন তবে আপনার অভ্যন্তরীণ ক্ষেত্র বিভাজক (আইএফএস) পরিবর্তনশীল কী তা আপনার জানা উচিত। অ্যাওকের ডিফল্ট আইএফএস হ'ল ট্যাব এবং স্পেস।

আউক-তে ক্ষেত্র বিভাজনের ধারণাটি এইভাবে কাজ করে: যখন এটি একটি ইনপুট লাইনের মুখোমুখি হয়, আইএফএস সংজ্ঞায়িত অনুসারে, অক্ষরের প্রথম সেটটি ক্ষেত্র এক হয়, যা $1 ব্যবহার করে অ্যাক্সেস করা হয়, অক্ষরের দ্বিতীয় সেটটি ক্ষেত্র দুটি হয়, যা $2 ব্যবহার করে অ্যাক্সেস করা হয়, তৃতীয় অক্ষরের অক্ষরটি ফিল্ড তিনটি হয়, যা $3 ব্যবহার করে অ্যাক্সেস করা হয় এবং অক্ষরের শেষ সেট অবধি এগিয়ে যায়।

এই অ্যাওক ফিল্ড সম্পাদনাটি আরও ভালভাবে বুঝতে, আসুন নীচের উদাহরণগুলিতে একবার দেখে নেওয়া যাক:

উদাহরণ 1: আমি tecmintinfo.txt নামে একটি পাঠ্য ফাইল তৈরি করেছি।

# vi tecmintinfo.txt
# cat tecmintinfo.txt

তারপরে কমান্ড লাইন থেকে, আমি নীচের কমান্ডটি ব্যবহার করে tecmintinfo.txt ফাইলটি থেকে প্রথম, দ্বিতীয় এবং তৃতীয় ক্ষেত্রগুলি মুদ্রণের চেষ্টা করি:

$ awk '//{print $1 $2 $3 }' tecmintinfo.txt

TecMint.comisthe

উপরের আউটপুট থেকে, আপনি দেখতে পাচ্ছেন যে প্রথম তিনটি ক্ষেত্রের অক্ষরগুলি আইএফএসের সংজ্ঞায়িত কোনটি স্থানের ভিত্তিতে মুদ্রিত হয়েছে:

  1. "TecMint.com" ফিল্ডটি $1 ব্যবহার করে অ্যাক্সেস করা হয়েছে
  2. ফিল্ড টু যা "হ'ল" $2 ব্যবহার করে অ্যাক্সেস করা হয়েছে
  3. তিনটি ক্ষেত্র যা "" হয় < $3 ব্যবহার করে অ্যাক্সেস করা হয়

আপনি যদি মুদ্রিত আউটপুটটিতে লক্ষ্য করেছেন, ক্ষেত্রের মান পৃথক করা হয় না এবং মুদ্রণটি ডিফল্টরূপে আচরণ করে।

ক্ষেত্রের মানগুলির মধ্যে স্পেস সহ আউটপুটটি স্পষ্টভাবে দেখতে, আপনাকে (,) অপারেটরটি নিম্নরূপ যুক্ত করতে হবে:

$ awk '//{print $1, $2, $3; }' tecmintinfo.txt

TecMint.com is the

সর্বদা মনে রাখা এবং সর্বদা মনে রাখার জন্য একটি গুরুত্বপূর্ণ বিষয় হ'ল আউকের মধ্যে ( এর ব্যবহার শেল স্ক্রিপ্টিংয়ের ব্যবহার থেকে পৃথক।

শেল স্ক্রিপ্টিং এর আওতায় ($) ভেরিয়েবলের মান অ্যাক্সেস করতে ব্যবহৃত হয় যখন Awk ($) এ কেবল ক্ষেত্রের সামগ্রীতে অ্যাক্সেস করার সময় ব্যবহৃত হয় তবে অ্যাক্সেসের জন্য নয় ভেরিয়েবলের মান।

উদাহরণ 2: আসুন একটি ফাইল ব্যবহার করে অন্য একটি উদাহরণ ঘুরে দেখি যার মধ্যে my_shoping.list নামক একাধিক লাইন রয়েছে।

No	Item_Name		Unit_Price	Quantity	Price
1	Mouse			#20,000		   1		#20,000
2 	Monitor			#500,000	   1		#500,000
3	RAM_Chips		#150,000	   2		#300,000
4	Ethernet_Cables	        #30,000		   4		#120,000		

বলুন যে আপনি শপিং তালিকায় প্রতিটি আইটেমের কেবল ইউনিট_প্রাইস মুদ্রণ করতে চেয়েছিলেন, আপনাকে নীচের কমান্ডটি চালাতে হবে:

$ awk '//{print $2, $3 }' my_shopping.txt 

Item_Name Unit_Price
Mouse #20,000
Monitor #500,000
RAM_Chips #150,000
Ethernet_Cables #30,000

আওকের কাছে একটি প্রিন্টফ কমান্ডও রয়েছে যা আপনাকে আউটপুট ফর্ম্যাট করতে সহায়তা করে এটি একটি দুর্দান্ত উপায় কারণ আপনি দেখতে পাচ্ছেন উপরের আউটপুটটি যথেষ্ট পরিষ্কার নয়।

আইটেম_নাম এবং ইউনিট_প্রাইজের আউটপুট ফর্ম্যাট করতে প্রিন্টফ ব্যবহার করুন:

$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt 

Item_Name  Unit_Price
Mouse      #20,000
Monitor    #500,000
RAM_Chips  #150,000
Ethernet_Cables #30,000

সারসংক্ষেপ

টেক্সট বা স্ট্রিং ফিল্টার করতে Awk ব্যবহারের ক্ষেত্রে ফিল্ড সম্পাদনা অত্যন্ত গুরুত্বপূর্ণ, এটি আপনাকে তালিকার কলামগুলিতে নির্দিষ্ট ডেটা পেতে সহায়তা করে। এবং সর্বদা মনে রাখবেন যে ওউকের ($) অপারেটরের ব্যবহার শেল স্ক্রিপ্টিংয়ের চেয়ে আলাদা।

আমি আশা করি নিবন্ধটি আপনার জন্য সহায়ক ছিল এবং প্রয়োজনীয় কোনও অতিরিক্ত তথ্য বা প্রশ্নের জন্য, আপনি মন্তব্য বিভাগে একটি মন্তব্য পোস্ট করতে পারেন।