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