উত্তর:
একটি awk
প্রোগ্রাম হ'ল কন্ডিশন-অ্যাকশন জুটির একটি সিরিজ, শর্তগুলি কোঁকড়া ধনুর্বন্ধনী বাইরে এবং ক্রিয়াকলাপগুলির বাইরে থাকে them শর্তটি শূন্য বা খালি স্ট্রিংয়ের মূল্যায়ন করে যদি কোনও শর্তকে মিথ্যা হিসাবে বিবেচনা করা হয়, অন্য যে কোনও কিছু সত্য (অবিচ্ছিন্ন ভেরিয়েবলগুলি শূন্য বা খালি স্ট্রিং, প্রসঙ্গের উপর নির্ভর করে, তাই এটি মিথ্যা)। হয় কোনও শর্ত বা কোনও ক্রিয়াকে বোঝানো যেতে পারে; কোনও শর্ত ছাড়াই বন্ধনীগুলি (যেমন আপনার শুরু হয়) একটি সত্য শর্ত হিসাবে বিবেচিত হয় এবং আঘাতের শিকার হলে সর্বদা মৃত্যুদন্ড কার্যকর করা হয় এবং কোনও পদক্ষেপ ছাড়াই যে কোনও শর্ত লাইনটি মুদ্রণ করবে যদি এবং শুধুমাত্র শর্তটি পূরণ করা হয়।
1
তাই এটি যে লাইন জন্য ডিফল্ট অ্যাকশন executes, লাইন (যা ধনুর্বন্ধনী পূর্ববর্তী কর্ম দ্বারা সংশোধিত হয়ে থাকতে পারে) মুদ্রণ আপনার স্ক্রিপ্টের শেষে একটি শর্ত (সবসময় সত্য) কোনো পদক্ষেপ সাথে।
আমি এই ধরণের শর্টকাটগুলি সত্যিই অপছন্দ করি কারণ এটি কীভাবে পার্স করা হচ্ছে তা ভ্রষ্ট করে এবং বিভ্রান্ত করে। আপনি যখন এই জাতীয় কিছু পড়েন awk -F"=" '{OFS="=";gsub(",",";",$2)}1'
, আপনি ভাবতে পারেন যে 1
এটি পূর্ববর্তী বিবৃতিটি সংশোধন করছে। অথবা আপনি মনে করতে পারেন যে 1
এটি একটি উপনাম {print}
, যা প্রযুক্তিগতভাবে সঠিক নয়।
আসলে, 1
একটি সম্পূর্ণ পৃথক বিবৃতি। আপনি বিবৃতি পৃথক করতে পারেন:
awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1
'
প্রতিটি awk বিবৃতি ফর্ম্যাট হয় condition {action}
। যদি কোনও {action}
দেওয়া না হয়, তবে ডিফল্ট ক্রিয়া হয় {print}
। (যদি কোনও condition
দেওয়া না হয়, তবে ডিফল্ট শর্তটি true
)
সুতরাং এখানে, 1
শর্তটি যা সর্বদা মূল্যায়ন করে true
যেহেতু এটি ননজারো। action
বাদ দেওয়া হয়, তাই ডিফল্ট {print}
সঞ্চালিত হয়। আপনি এটি এইভাবে ভাবতে পারেন:
awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1!=0 {print}
'
awk -F"=" '{OFS="=";gsub(",",";",$2)}{print}'