ধরা যাক আপনি "আলাদা" পাঠ্যের সাথে লাইন 4 প্রতিস্থাপন করতে চান। আপনি AWK এর মতো ব্যবহার করতে পারেন:
awk '{ if (NR == 4) print "different"; else print $0}' input_file.txt > output_file.txt
এডাব্লুকে ইনপুটটিকে "রেকর্ডগুলি" "ক্ষেত্রগুলিতে" বিভক্ত বলে বিবেচনা করে। ডিফল্টরূপে, একটি লাইন একটি রেকর্ড। NR
দেখা রেকর্ড সংখ্যা। $0
বর্তমান সম্পূর্ণ রেকর্ড উপস্থাপন করে (যদিও রেকর্ড $1
থেকে প্রথম ক্ষেত্র এবং আরও অনেক কিছু; ডিফল্টরূপে ক্ষেত্রগুলি লাইন থেকে শব্দ)।
সুতরাং, যদি বর্তমান লাইন সংখ্যা 4 হয় তবে স্ট্রিংটি "আলাদা" মুদ্রণ করুন তবে অন্যথায় লাইনটি অপরিবর্তিতভাবে মুদ্রণ করুন।
এডাব্লুকে- { }
তে, প্রতিটি ইনপুট রেকর্ডে প্রোগ্রাম কোডটি একবারে রানের সাথে সংযুক্ত থাকে।
শেলের মতো জিনিসগুলির ব্যাখ্যা করার চেষ্টা থেকে শেলকে আটকে রাখতে আপনাকে একক-উক্তিগুলিতে AWK প্রোগ্রামটি উদ্ধৃত করতে হবে $0
।
সম্পাদনা: নীচের মন্তব্যে @ চেপনার থেকে একটি খাটো এবং আরও মার্জিত AWK প্রোগ্রাম:
awk 'NR==4 {$0="different"} { print }' input_file.txt
কেবল রেকর্ডের জন্য (অর্থাত্ লাইন) 4 নম্বর, পুরো রেকর্ডটি "ভিন্ন" স্ট্রিংয়ের সাথে প্রতিস্থাপন করুন। তারপরে প্রতিটি ইনপুট রেকর্ডের জন্য, রেকর্ডটি মুদ্রণ করুন।
স্পষ্টতই আমার AWK দক্ষতা মরিচা! ধন্যবাদ, চ্যাপনার
সম্পাদনা করুন: এবং ডেনিস উইলিয়ামসনের একটি আরও ছোট সংস্করণ দেখুন:
awk 'NR==4 {$0="different"} 1' input_file.txt
এটি কীভাবে মন্তব্যে ব্যাখ্যা করা হয়: 1
সর্বদা সত্যের মূল্যায়ন করে, তাই সম্পর্কিত কোড ব্লক সর্বদা চলমান। তবে কোনও সম্পর্কিত কোড ব্লক নেই, যার অর্থ AWK কেবল পুরো লাইনটি মুদ্রণের জন্য এটির ডিফল্ট ক্রিয়া করে। এডাব্লুকে এই জাতীয় সংক্রমণের প্রোগ্রামগুলির জন্য ডিজাইন করা হয়েছে।