লিনাক্সে আওক সহ পরবর্তী কমান্ড কীভাবে ব্যবহার করবেন - অংশ 6


আওক সিরিজের এই sixth ষ্ঠ অংশে, আমরা পরবর্তী কমান্ডটি ব্যবহার করব, যা আউককে আপনার দেওয়া সমস্ত অবশিষ্ট নিদর্শন এবং অভিব্যক্তি এড়িয়ে চলতে বলেছে, পরিবর্তে পরবর্তী ইনপুট লাইনটি পড়ুন।

পরবর্তী কমান্ড আপনাকে কমান্ড এক্সিকিউশনের সময় নষ্টকারী পদক্ষেপ হিসাবে আমি উল্লেখ করব তা কার্যকর করা রোধ করতে সহায়তা করে।

এটি কীভাবে কাজ করে তা বোঝার জন্য আসুন আমরা এই জাতীয় দেখতে খাদ্য_লিস্ট.টেক্সট নামে একটি ফাইল বিবেচনা করি:

No      Item_Name               Price           Quantity
1       Mangoes                 $3.45              5
2       Apples                  $2.45              25
3       Pineapples              $4.45              55
4       Tomatoes                $3.45              25
5       Onions                  $1.45              15
6       Bananas                 $3.45              30

নিম্নলিখিত কমান্ডটি চালানো বিবেচনা করুন যা প্রতিটি আইনের শেষে (*) চিহ্ন দিয়ে 20 এর চেয়ে কম বা সমান পরিমাণে খাদ্য আইটেমগুলিকে পতাকাঙ্কিত করবে:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt 

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

উপরের কমান্ডটি আসলে নীচে হিসাবে কাজ করে:

  1. প্রথমে, এটি প্রতিটি ইনপুট লাইনের পরিমাণ, চতুর্থ ক্ষেত্রটি 20 এর চেয়ে কম বা সমান কিনা তা পরীক্ষা করে, কোনও মান যদি এই শর্তটি পূরণ করে, তবে এটি (*) চিহ্ন সহ মুদ্রিত এবং পতাকাঙ্কিত হবে শেষে একটিটি প্রকাশ করে: $4 <= 20
  2. দ্বিতীয়ত, এটি প্রতিটি ইনপুট লাইনের চতুর্থ ক্ষেত্রটি 20 এর চেয়ে বেশি হয় কিনা তা পরীক্ষা করে দেখায় এবং যদি কোনও লাইন শর্তটি পূরণ করে তবে এটি দুটি এক্সপ্রেশন ব্যবহার করে মুদ্রিত হয়: $4> 20

তবে এখানে একটি সমস্যা রয়েছে, যখন প্রথম এক্সপ্রেশনটি কার্যকর করা হয়, একটি পতাকাটি আমরা পতাকাঙ্কিত করতে চাইলে এটি মুদ্রণ করা হয়: {printf "% s\t% s\n", $0, "**"; } এবং তারপরে একই পদক্ষেপে দ্বিতীয় প্রকাশটিও পরীক্ষা করা হয় যা সময় নষ্টের কারণ হয়ে ওঠে।

সুতরাং প্রথম এক্সপ্রেশনটি ব্যবহার করে মুদ্রিত করা হয়েছে এমন পতাকাঙ্কিত লাইনগুলি মুদ্রণের পরে আবার দ্বিতীয় কোডটি $4> 20 চালানোর দরকার নেই।

এই সমস্যাটি মোকাবেলা করার জন্য আপনাকে পরবর্তী কমান্ডটি নিম্নরূপ ব্যবহার করতে হবে:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

$4 <= 20 {printf "% s\t% s\n", $0, "*" ব্যবহার করে একটি একক ইনপুট লাইন মুদ্রিত হওয়ার পরে; পরবর্তী ; included , অন্তর্ভুক্ত পরবর্তী কমান্ডটি দ্বিতীয় এক্সপ্রেশনটি এড়াতে সহায়তা করবে $4> 20 {মুদ্রণ $0;} , তাই কার্যকর হবে পরিমাণটি 20 এর চেয়ে বেশি কিনা তা পরীক্ষা করে সময় নষ্ট না করে পরবর্তী ইনপুট লাইনটি।

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

আশা করি আপনি কীভাবে সহায়ক সহায়তার জন্য এটি পেয়েছেন এবং নীচের মন্তব্যে বিভাগে একটি মন্তব্য রেখে বরাবরের মতো আপনি আপনার চিন্তাভাবনাগুলি লিখিতভাবে রাখতে পারেন।