আমি অ-প্রযুক্তিগত দর্শকদের জন্য একটি উপস্থাপনা এক সাথে রাখছি। আমার বাশে চলছে এমন একটি প্রোগ্রাম যা মানগুলির ধারাবাহিক প্রবাহকে আউটপুট করে, যার মধ্যে কয়েকটি গুরুত্বপূর্ণ are আমি গুরুত্বপূর্ণ ফলাফলগুলি হাইলাইট করতে চাই কারণ তারা প্রদর্শিত হচ্ছে যাতে শ্রোতা তাদের ফ্রিকোয়েন্সি সম্পর্কে ধারণা পেতে পারে। সমস্যাটি হ'ল আমি sed
কোন চলমান স্ট্রিমের কাজ করতে পারি না । আমি যদি কোনও ফাইলে ফলাফলগুলি রাখি তবে এটি ঠিকঠাক কাজ করে:
cat output.txt | sed "s/some text/some text bolded/"
তবে আমি যদি চলমান আউটপুটে একই জিনিস চেষ্টা করি তবে:
command | sed "s/some text/some text bolded/"
sed
কিছুই করে না কোন চিন্তা?
ল্যামবার্ট যেহেতু উল্লেখ করতে যথেষ্ট সহায়ক ছিল, আমার এই বক্তব্য sed
অস্পষ্ট ছিল না। যা ঘটছে তা হ'ল প্রোগ্রামটি আউটপুট করে stdout
(আমি বেশ নিশ্চিত যে এটি stderr
এটি লিখেনি) যদিও এটি সাধারণত পাইপ করা হলেও sed
।
সমস্যাটি মনে হয় কমান্ডটি দ্বিতীয় প্রোগ্রামটি কল করে, যা পরে স্টডআউটকে আউটপুট করে। প্রথম প্রোগ্রাম দ্বারা মুদ্রিত কয়েকটি লাইন রয়েছে; এগুলি আমি সম্পাদনা করতে পারি। তারপরে দ্বিতীয় প্রোগ্রাম দ্বারা মুদ্রিত মানগুলির একটি ধারা রয়েছে; এগুলি আমি সম্পাদনা করতে পারি না।
পার্ল এবং অ্যাজক পদ্ধতিগুলিও কাজ করে না।
command|egrep 'some text|$'
g
"বৈশ্বিক" প্রতিস্থাপন যুক্ত করা উচিত , অন্যথায় একটি লাইনে কেবল প্রথম ঘটনাটি প্রতিস্থাপন করা হবে:sed "s/old/new/g"
stdbuf -o0 command | sed "s/some text/some text bolded/"
কাজ করে?