gawk
এর -i inplace
বিকল্প ব্যবহার করা এবং stdout
কী কী জিনিস মুদ্রণ করা সম্ভব ?
উদাহরণস্বরূপ, যদি আমি কোনও ফাইল আপডেট করতে চাইতাম এবং যদি কোনও পরিবর্তন হয় তবে ফাইলটির নাম এবং পরিবর্তিত লাইনগুলি প্রিন্ট করে stderr
আমি এর মতো কিছু করতে পারি
find -type f -name 'myfiles' -exec gawk -i inplace '{if(gsub(/pat/, "repl")) { print FILENAME > "/proc/self/fd/2" ; print > "/proc/self/fd/2"; } print;}' {} +
তবে এর stdout
পরিবর্তে ব্যবহারের কোনও উপায় আছে বা বিকল্পটি প্রবাহে সেই ব্লকটি প্রিন্ট করার জন্য একটি ক্লিনার উপায় আছে?
grep
হতে পারে। আমার প্রথম প্রবৃত্তিটি দু'বার ফাইলটি "প্রক্রিয়া" করা এড়ানো, তবে তা যদি সত্যিই দ্রুত হয় তবে আমি কিছুটা অবাক হব না। এটি কেবল দেখানোর জন্য যায় যে আমি কেন প্রোফাইলিংয়ের কাজগুলিতে আমার অন্ত্রে বিশ্বাস করতে পারি
-print -exec gawk
আর কার্যকর করা হয় না) এবং 2) এটি প্রথম ম্যাচে থামবে সুতরাং 1 ম ম্যাচটি না থাকলে শেষ লাইন আপনি এখনও পুরো ফাইলটি দুইবার প্রক্রিয়া করছেন না (এটি আরও 1.X বারের মতো)। এছাড়াও, যদি এটির gawk -i inplace
মতো কাজ করে sed -i
তবে ফাইলটি যে কোনও
find -type f -name 'myfiles' -exec grep -q 'pattern' {} \; -print -exec gawk -i inplace '{do_your_sub_and_print_to_dev/stderr_too}' {} \;
কেবল সেই ফাইলটি সম্পাদনা করতে বিশ্রী ব্যবহার করবেন যা প্রকৃতপক্ষে সেই প্যাটার্নের সাথে মিল রয়েছে lines