লেজ -f এ, আমি কী কী কী ওয়ার্ডস রয়েছে তা কীভাবে ফিল্টার করব?


39

আমি tail -fআমার লগ করতে চাই। যাইহোক, আমি শব্দগুলি রয়েছে এমন সমস্ত কিছুই ফিল্টার করতে চাই:

"ELB", "পিঙ্গডম", "স্বাস্থ্য"


2
Vanheusden.com/multitail এর সাহায্যে আপনি গুরুত্বপূর্ণ জিনিসগুলিকে রঙ করতে পারেন বা আপনি দেখতে চান না এমন জিনিসগুলি ফিল্টার করতে পারেন, উদাহরণস্বরূপ কনফিগারেশন pantz.org/software/multitail/multitailconfig.html
অলিউজ

উত্তর:


58

আমি গ্রেপের পরিবর্তে অজক ব্যবহার সম্পর্কে জানি না, তবে এটি আমার পক্ষে কাজ করে:

tail -f file.log | grep -Ev '(ELB|Pingdom|Health)'

সম্পাদনা: দমৌতী এবং কালেব যেমন উল্লেখ করেছেন, আপনি সুবিধার egrepপরিবর্তেও ব্যবহার করতে grep -Eপারেন। কিছু সিস্টেমে এটি একই বাইনারিটির লিঙ্ক হবে, অন্যদের মধ্যে এটির একটি অনুলিপি গ্রেপ প্যাকেজ সরবরাহ করে। যে কোনও উপায়ে এটি -Eস্যুইচের বিকল্প হিসাবে বেঁচে থাকে । তবে, জিএনইউ গ্রেপ ম্যান পৃষ্ঠা অনুসারে:

[…] দুটি বৈকল্পিক প্রোগ্রাম egrepএবং fgrepউপলভ্য। egrepহিসাবে একই grep -Efgrepহিসাবে একই grep -F। হয় হয় egrepবা হ্রাস হিসাবে সরাসরি অনুরোধ fgrep, কিন্তু historicalতিহাসিক অ্যাপ্লিকেশন যা তাদের উপর নির্ভর করে না মোডে চালানোর অনুমতি দেওয়া হয়।

যেহেতু এগুলি সমার্থক কমান্ড, তাই আপনার পছন্দের বিষয়টি নীচে নেমে আসে যদি না আপনি মোটেও ইড্রেপ না করেন। তবে সামনের সামঞ্জস্যের জন্য grep -Eসিন্ট্যাক্সটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে যেহেতু অন্য পদ্ধতিটি সরকারীভাবে অবচিত করা হয়েছে।


ব্যবহার করে grep -Eএর পরিবর্তে egrepপরোয়ানা সদৃশ উত্তর দিয়েছিলেন?
কালেব

@ কালেব আমি দেখছি না কেন। বিড়ালের চামড়ার একাধিক উপায় রয়েছে এবং এই সাইটটি সমস্ত তালিকা তৈরি করার ক্ষমতা দেয়
ডিটেস্ট

1
হ্যাঁ, তবে এগুলি কেবল একে অপরের সাথে প্রতিচ্ছবি, কিছু কার্যকরী ওভারল্যাপ সহ দুটি পৃথক প্রোগ্রাম নয়। তাহলে কি পুরোপুরি উত্তর না হয়ে 'সংযোজন' (পড়ুন: মন্তব্য) করা যেতে পারে? আমি কম অপরাধের জন্য নিম্নগঠন করেছি ...
মার্সিন

@ ডিস্টেস্ট: অধিকার অনুসারে ডুমরতি আমাকে কয়েক সেকেন্ডের মধ্যে ঘুষি মারল এবং যদিও তিনি যুক্তির ব্যাখ্যা দেন নি তবে তিনি এখানে কিছুটা credit পাওয়ার যোগ্য। আপনারা পার্টিতে স্পষ্টভাবে দেরি করেছিলেন যেহেতু আপনারা আসার আগে আমাদের দু'জনেরই কমপক্ষে দু'টি উর্ধ্বতন ছিল। একটি সিমলিংকড বাইনারি থেকে বাক্য বাক্যে সিনট্যাক্স পরিবর্তন করা সাধারণত এমন একটি বিষয় যা আপনি আলাদাভাবে উত্তর না দিয়ে মন্তব্যটি ব্যবহার করবেন। আপনি ত্বক বিড়াল ভিন্নভাবে চান ব্যবহার করেন তাহলে sed, awk, perl, multitailবা ninja_foo
কালেব

1
@ ডিস্টেস্ট: কিছু মূল উত্স যুক্ত করার জন্য আমি আপনার উত্তরে উল্লেখযোগ্য সত্যিকারের সম্পাদনা করার স্বাধীনতা নিয়েছি। দেখে মনে হচ্ছে ভবিষ্যতের ব্যবহারের জন্য -E প্রস্তাবিত, সুতরাং আমি এটি চিহ্নিত করেছি, তবে এস্ট্রপ না থাকা ডিস্ট্রোস সম্পর্কে আপনার নোটটি সরিয়েছি। উল্লিখিত ডিস্ট্রোস লাইনগুলির এড্রেপ রয়েছে, এটি একটি সিমলিংকের পরিবর্তে কেবল একটি পৃথক বাইনারি।
কালেব

21

আপনি যে ফিল্টার আউট করতে চান তার পাইপ দ্বারা পৃথক করা তালিকার সাহায্যে এটিকে পাইপ করার চেষ্টা করুন:

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


2
(") দিয়ে নয়, (") দিয়ে অভিব্যক্তিটি শেষ হওয়া উচিত?
বিবাজা 42

হ্যাঁ ধন্যবাদ যে এটি একটি টাইপ ছিল। ভবিষ্যতের রেফারেন্সের জন্য যেহেতু স্ট্যাক এক্সচেঞ্জ সাইটগুলি উইকিসের মতো কাজ করে, এটি সেই ধরণের জিনিস যা আপনি ঠিক ঠিক করতে পারেন।
কালেব

আমি ভাবলাম সম্পাদনাটি 6 টিরও বেশি চর থাকতে হবে?
সাইরেক্স

আপনার যদি উচ্চ প্রতিনিধি না থাকে তবে হ্যাঁ সেখানে একটি ন্যূনতম 6 টি অক্ষর রয়েছে তবে এই ক্ষেত্রে 1 টি চরিত্রটি অত্যন্ত গুরুত্বপূর্ণ। আপনি শরীরে একটি HTML মন্তব্য যুক্ত করে পরিবর্তনটি জোর করতে পারেন। অক্ষরগুলি সীমাটির দিকে গণনা করবে এবং আপনি কেন পরিবর্তন আনছেন তা আপনি নোট করতে পারেন।
কালেব

@ কালেব অনেক ধন্যবাদ মাল্টিটাইল পরামর্শের জন্য এটি দুর্দান্ত ! বিশ্বাস করতে পারি না আমি এগুলি ছাড়া আমার জীবনে এত দিন চলেছি।
পাশেরউইঞ্জু


3

আপনি কেন এই তথ্য লগ ইন করতে চান?

  • এটি সংরক্ষণাগার জন্য কঠোরভাবে?
  • আপনি কি লগ ফাইলগুলিতে বিভিন্ন কীওয়ার্ড বা নিদর্শনগুলির উপর নির্ভর করে শর্তসাপেক্ষে বিভিন্ন স্ক্রিপ্টগুলি সম্পাদন করতে চান?

আপনি যদি লগ ফাইলগুলির সামগ্রীর উপর নির্ভর করে স্ক্রিপ্টযুক্ত আচরণ করতে চান তবে আপনি প্রত্যাশা ব্যবহার করে আপনার ফিল্টারিং করতে ইচ্ছুক হতে পারেন। ( 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  
    }  
}

সুতরাং আপনি প্রত্যাশার বিবৃতিতে নিদর্শনগুলি নির্দিষ্ট করেন এবং আপনি বিভিন্ন আচরণ নির্দিষ্ট করে দেন এবং আপনি পুরো জিনিসটি একটি লুপে মুড়িয়ে রাখতে পারেন এবং খুব সহজেই খুব শক্তিশালী ফিল্টার লিখতে পারেন যা আপনার ইনপুটটির বিভিন্ন অংশে বিভিন্ন ফাইলও লিখতে পারে বা পুরোপুরি ফেলে দিতে পারে, অথবা আপনার ইনপুটটিতে যা আছে তার উপর নির্ভর করে পদক্ষেপ গ্রহণ করুন এবং অন্যান্য স্ক্রিপ্টগুলি চালান।

সুতরাং, আপনি কেন আপনার লগ ফাইলগুলি ফিল্টার করার চেষ্টা করছেন, লগ ইনপুটটিতে পদক্ষেপ নিতে, বা কেবল সংরক্ষণাগার কারণে?


প্রত্যাশার রেফারেন্সের জন্য প্লাস ওয়ান, যা আমি বেশ দীর্ঘ সময় আগে ব্যবহার করেছি এবং এটি সম্পর্কে পুরোপুরি ভুলে গিয়েছিলাম।
এমপিআই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.