আমি tail -f
আমার লগ করতে চাই। যাইহোক, আমি শব্দগুলি রয়েছে এমন সমস্ত কিছুই ফিল্টার করতে চাই:
"ELB", "পিঙ্গডম", "স্বাস্থ্য"
আমি tail -f
আমার লগ করতে চাই। যাইহোক, আমি শব্দগুলি রয়েছে এমন সমস্ত কিছুই ফিল্টার করতে চাই:
"ELB", "পিঙ্গডম", "স্বাস্থ্য"
উত্তর:
আমি গ্রেপের পরিবর্তে অজক ব্যবহার সম্পর্কে জানি না, তবে এটি আমার পক্ষে কাজ করে:
tail -f file.log | grep -Ev '(ELB|Pingdom|Health)'
সম্পাদনা: দমৌতী এবং কালেব যেমন উল্লেখ করেছেন, আপনি সুবিধার egrep
পরিবর্তেও ব্যবহার করতে grep -E
পারেন। কিছু সিস্টেমে এটি একই বাইনারিটির লিঙ্ক হবে, অন্যদের মধ্যে এটির একটি অনুলিপি গ্রেপ প্যাকেজ সরবরাহ করে। যে কোনও উপায়ে এটি -E
স্যুইচের বিকল্প হিসাবে বেঁচে থাকে । তবে, জিএনইউ গ্রেপ ম্যান পৃষ্ঠা অনুসারে:
[…] দুটি বৈকল্পিক প্রোগ্রাম
egrep
এবংfgrep
উপলভ্য।egrep
হিসাবে একইgrep -E
।fgrep
হিসাবে একইgrep -F
। হয় হয়egrep
বা হ্রাস হিসাবে সরাসরি অনুরোধfgrep
, কিন্তু historicalতিহাসিক অ্যাপ্লিকেশন যা তাদের উপর নির্ভর করে না মোডে চালানোর অনুমতি দেওয়া হয়।
যেহেতু এগুলি সমার্থক কমান্ড, তাই আপনার পছন্দের বিষয়টি নীচে নেমে আসে যদি না আপনি মোটেও ইড্রেপ না করেন। তবে সামনের সামঞ্জস্যের জন্য grep -E
সিন্ট্যাক্সটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে যেহেতু অন্য পদ্ধতিটি সরকারীভাবে অবচিত করা হয়েছে।
grep -E
এর পরিবর্তে egrep
পরোয়ানা সদৃশ উত্তর দিয়েছিলেন?
sed
, awk
, perl
, multitail
বা ninja_foo
।
আপনি যে ফিল্টার আউট করতে চান তার পাইপ দ্বারা পৃথক করা তালিকার সাহায্যে এটিকে পাইপ করার চেষ্টা করুন:
tail -f log_file | egrep -v 'ELB|Pingdom|Health'
নোট করুন যে ম্যাচের তালিকার চারপাশে প্রথম বন্ধনী ব্যবহার করা alচ্ছিক। যেহেতু এটি |
একটি সাব-গ্রুপের অংশ হিসাবে ঘটে কিনা তা গ্রেপ দ্বারা লজিক্যাল ওআর অপারেটর হিসাবে বিবেচনা করা হয়। '(ELB|Pingdom|Health)'
ঠিক একই কাজ করবে। কারও কারও জন্য বাক্য গঠন আরও সুস্পষ্ট হতে পারে; প্রথম বারের বন্ধনী যুক্ত না করে আমি কোনও একক ম্যাচ থেকে সম্ভাব্য ম্যাচের তালিকায় স্যুইচ করতে পারি বলে টাইপ করা আমার পক্ষে সহজ।
অতিরিক্ত creditণের জন্য, এটি multitail
ফিল্টারিং আউটপুট নিয়ে আসে যখন নিনজা ফু করে তা উল্লেখযোগ্য worth উদাহরণস্বরূপ আপনি এইভাবে আপনার শব্দগুলির জন্য ফিল্টার করতে পারেন:
multitail -e ELB -e Pingdom -e Health -f log_file
আপনি এটি রঙিন করতে বা অন্যথায় আউটপুটটিকে কেবল ফিল্টারিংয়ের পরিবর্তে হাইলাইট করতে পারেন।
সম্পাদনা: ডিগ্রিস্টের উত্তর এবং অ্যাড্রেপ কীভাবে বন্ধ করার জন্য কেবলমাত্র একটি অবচয় বিকল্প বিকল্প উপায়ের সম্পূর্ণ ব্যাখ্যার জন্য মন্তব্যগুলি দেখুন grep -E
।
আপনি কেন এই তথ্য লগ ইন করতে চান?
আপনি যদি লগ ফাইলগুলির সামগ্রীর উপর নির্ভর করে স্ক্রিপ্টযুক্ত আচরণ করতে চান তবে আপনি প্রত্যাশা ব্যবহার করে আপনার ফিল্টারিং করতে ইচ্ছুক হতে পারেন। ( http://en.wikedia.org/wiki/Expect ) প্রত্যাশা টিসিএল এক্সটেনশন তবে এক্সপেক্টের পাইথন সংস্করণও রয়েছে।
প্রত্যাশা আপনাকে এই শক্তিশালী নমনীয় সুইচ-এর মত বিবৃতি দেয় যা আপনাকে রাজ্যগুলির উপর নির্ভর করে শর্ত অনুসারে বিভিন্ন আচরণ বা আপনার ইনপুট প্রবাহে উপস্থিত নিদর্শনগুলি নির্দিষ্ট করতে দেয়। উদাহরণ স্বরূপ:
expect {
"password:" {
send "password\r"
}
"yes/no)?" {
send "yes\r"
set timeout -1
}
timeout {
exit
}
-re . {
exp_continue
}
eof {
exit
}
}
সুতরাং আপনি প্রত্যাশার বিবৃতিতে নিদর্শনগুলি নির্দিষ্ট করেন এবং আপনি বিভিন্ন আচরণ নির্দিষ্ট করে দেন এবং আপনি পুরো জিনিসটি একটি লুপে মুড়িয়ে রাখতে পারেন এবং খুব সহজেই খুব শক্তিশালী ফিল্টার লিখতে পারেন যা আপনার ইনপুটটির বিভিন্ন অংশে বিভিন্ন ফাইলও লিখতে পারে বা পুরোপুরি ফেলে দিতে পারে, অথবা আপনার ইনপুটটিতে যা আছে তার উপর নির্ভর করে পদক্ষেপ গ্রহণ করুন এবং অন্যান্য স্ক্রিপ্টগুলি চালান।
সুতরাং, আপনি কেন আপনার লগ ফাইলগুলি ফিল্টার করার চেষ্টা করছেন, লগ ইনপুটটিতে পদক্ষেপ নিতে, বা কেবল সংরক্ষণাগার কারণে?