একটি ভিন্ন রঙের সাথে কীওয়ার্ডের উপস্থিতিগুলি চিহ্নিত করুন


13

আমার একটি প্রোগ্রাম আছে যা stdoutপছন্দ করার জন্য একটি আউটপুট আউট ছড়িয়ে দেয় :

[OK]      Something is ok
[OK]      Something else is also ok
[FAIL]    This does not look good
[FAIL]    Neither does this
[OK]      At least this is fine

আরো সহজ স্পট আউটপুট আমি শব্দ দৃষ্টিগোচর চিহ্নিত করতে চান থেকে ব্যর্থ FAILলাল সঙ্গে ছাড়া অন্যান্য বার্তাগুলি খারিজ। যদি আমি OKসবুজ দিয়ে কীওয়ার্ডগুলি হাইলাইট করতে পারি তবে এটি দুর্দান্ত হবে :)।

পাইপটি করা কীওয়ার্ডের উপস্থিতিগুলিতে egrep --color FAILকেবল সেই লাইনগুলি দেখায় FAIL


1
একটি জন্য grepসমাধান দেখুন unix.stackexchange.com/a/34322
manatwork

আপনার সোর্স কোড পরিবর্তন করার অ্যাক্সেস আছে? এটি কি বাশ লিপি?
h3rrmiller

লিংক আপনার নির্দিষ্ট করা আমি আমার পথ ক্লিক থেকে @manatwork stackoverflow.com/questions/972370 এবং কিছু সঙ্গে tail -fএবং awkযাদু, আমি যেতে ভাল =) am
থিওডর

উত্তর:


10

manatworkঅন্যান্য প্রশ্নের 'উজ্জ্বল সামান্য "বা কিছুই" হ্যাকের উপর ভিত্তি করে আমি এটি অফার করি যা দুটি হাইলাইট রঙ পাওয়ার ক্ষমতা যুক্ত করে :

 $ myprogram | \
   GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
   GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'

এটি হ'ল, আপনি প্রতিবার grepপৃথক GREP_COLORSপরিবেশের পরিবর্তনশীল সহ আউটপুটটি দু'বার চালিয়ে যান ।

'01; 32 'মানটির অর্থ "গা bold় সবুজ" এবং অন্যটির অর্থ "গা bold় লাল"। আরও ধারণাগুলির জন্য এএনএসআই কোডগুলিতে উইকিপিডিয়া নিবন্ধটি দেখুন।

হায়, এটির জন্য জিএনইউ গ্রেপ সংস্করণ 2.5.3 বা তার বেশি প্রয়োজন। জিএনইউ গ্রেপের পুরানো সংস্করণগুলি একটি ভিন্ন রঙিন ব্যবস্থাকে সমর্থন করেছে, তবে এই সংস্করণগুলিতে একটি বাগ রয়েছে যা আপনাকে পাইপলাইনে ফিচারটি একাধিকবার ব্যবহার করতে বাধা দেয়। বিএসডি গ্রেপ পুরানো জিএনইউ গ্রেপ কালারিং মেকানিজম অনুকরণ করে এবং এটি একটি পাইপলাইনে দু'বার কাজ করবে, তবে manatworkহ্যাকের কারণে এটি "খালি উপ-এক্সপ্রেশন" সম্পর্কে চিৎকার করে ।

এটিকে সমস্ত একক লাইন তৈরি করতে আপনি প্রথম দুটি লাইনের শেষে ব্যাকস্ল্যাশগুলি সরিয়ে ফেলতে পারেন। আমি কেবল স্পষ্টতার জন্য এবং এসই পৃষ্ঠার ফর্ম্যাটটির সাথে সুন্দর খেলতে এখানে বিভক্ত করেছি।


সত্যিই উজ্জ্বল! তবে কোনও কারণে স্ক্রিপ্টটি আমার মেশিনে দ্বিতীয় বিবৃতিটি হাইলাইট করে বলে মনে হচ্ছে না। আমি সেন্টোস 5 চালাচ্ছি
থিওডর

2
এখানে যা ঘটছে তা হ'ল সেন্টোস 5 একটি জিএনইউ গ্রেপ পর্যাপ্ত পুরানো যা এটি সমর্থন করে না GREP_COLORS, বহুবচন। এটি GREP_COLORকেবলমাত্র পুরানো পদ্ধতি ব্যবহার করে এবং সেই পদ্ধতিতে একটি বাগ রয়েছে যা এটি সঠিক কাজটি করতে বাধা দেয়। আপনি যদি কমান্ডটি ব্যবহার করতে GREP_COLOR=32এবং এই জাতীয় পরিবর্তন করেন তবে এটি কেবল প্রথম ম্যাচের হাইলাইট রঙ পরিবর্তন করবে। আপনি যদি ফলাফলটি পাইপ করে hexdump -cদেখেন যে দ্বিতীয় egrepকমান্ড যুক্ত করা কিছু করে তবে এটি আইনী এএনএসআই নয়। নীচের লাইন: এটি সঠিকভাবে কাজ করতে আপনাকে আপগ্রেড grepকরতে হবে।
ওয়ারেন ইয়ং

হাহা এ রকম অন্তর্দৃষ্টিপূর্ণ মন্তব্য হ্যাঁ CentOS5 পুরানো ধরণের হয়ে উঠছে, যেমন অনেকগুলি ওএস: পুরানো মেশিনে ছুটে আসছে পুরানো কথা, fশ্বর ত্যাগ করেছেন লগ বার্তা :) আমি চেষ্টা করব সেন্টো 6-তে আপগ্রেড করা সম্ভব না কিনা তা দেখার চেষ্টা করব।
থিওডর

আমি সবেমাত্র আমার সেন্টস 6 বাক্সে আমার সমাধানটি পরীক্ষা করে দেখেছি এবং এটি সেখানে কাজ করে যা আমার ডায়াগনোসিসকে নিশ্চিত করে। (আগের পরীক্ষাগুলি উবুন্টু সার্ভারগুলিতে ছিল)) জিএনইউ গ্রেপ ২.6.৩ সহ EL6 জাহাজ। মজার বিষয় হল, GREP_COLORপরিবর্তিত হওয়ার সাথে সাথে বৈশিষ্ট্যটি হ্রাস করা হলেও তারা (একক) বাগটিও ঠিক করেছিলেন ।
ওয়ারেন ইয়ং

আমি বুঝতে পারি না যে এটি কীভাবে সমস্যার সমাধান করে 1 ম গ্রেপ সমস্ত "ব্যর্থ" ফিল্টার করে ফেলবে তাই দ্বিতীয়
গ্রেপের

1

আপনি এটির জন্য মাল্টিটেল বা সিসিজে ব্যবহার করতে পারেন, উভয়ই কনফিগারগুলিকে ম্যাচ এবং রঙগুলিতে রেজিেক্সপগুলি বর্ণনা করার অনুমতি দেয়।


1

ওয়ারেন ইয়ংয়ের উত্তরের ভিত্তিতে, আমি এই পাইথন স্ক্রিপ্টটি লিখেছিলাম যা একই জিনিসটি আরও মার্জিতভাবে এবং অনেক কম টাইপ করে does সুতরাং আপনি কীভাবে এই স্ক্রিপ্টটি ব্যবহার করবেন:

cat yourfile | himul '\[OK\]' '\[FAIL\]'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.