কম ভিতরে ভিতরে গ্রেপ?


58

আমি বর্তমানে কিছু সমস্যা খুঁজছি অনেক অপরিচিত লগ মাধ্যমে সন্ধান করছি। আমি প্রথম ফাইলটি ইভেন্টস.লগ এ দেখছি এবং আমি কমপক্ষে তিনটি পৃষ্ঠা পেয়েছি lessযাতে বিভিন্ন সময়ে একই ইভেন্টটি প্রদর্শিত হতে পারে - এমন ঘটনা যা মোটামুটি সৌম্য বলে মনে হয়। আমি এই ইভেন্টটি ফিল্টার করতে চাই এবং বর্তমানে আমি প্রস্থান করে lessএবং এর মতো কিছু করি

grep -v "event text" Events.log | less

এটি এখন বেশ কয়েকটি অন্যান্য সাধারণ, উদ্দীপনা ইভেন্ট নিয়ে আসে যা আমি ফিল্টারও করতে চাই। একটি উপায় আছে আমি করতে পারেন grep -v ভিতরে এর less? বরং করণীয়

egrep -v "event text|something else|the other thing|foo|bar" Events.log | less

কোনও ধরণের লগ ফাইলের দিকে তাকানোর সময় এটি আমাকে দরকারী বৈশিষ্ট্য হিসাবে আঘাত করে - এবং যদি lessসরঞ্জামটি না হয় তবে আমার যে গুণাবলীর সন্ধান রয়েছে সেগুলির সাথে আর কি আছে? lessঅন্তর্নির্মিত কেবল একটি স্টাইলের দর্শক grep

উত্তর:


91

lessখুব শক্তিশালী প্যাটার্ন মিলছে। থেকে man পৃষ্ঠা :

&pattern

    মেলে কেবল লাইনগুলি pattern; যে লাইনগুলি মেলে pattern না তা প্রদর্শিত হয় না। যদি patternখালি থাকে (আপনি যদি &তাৎক্ষণিক অনুসরণ করেন ENTER) তবে যে কোনও ফিল্টারিং বন্ধ হয়ে যায় এবং সমস্ত লাইন প্রদর্শিত হয়। ফিল্টারিং কার্যকর হওয়ার সময়, একটি অ্যাম্পারস্যান্ড প্রম্পটের শুরুতে প্রদর্শিত হবে, একটি অনুস্মারক হিসাবে ফাইলের কিছু লাইন লুকানো থাকতে পারে।

    কিছু অক্ষর হিসেবে বিশেষ /কমান্ড :

    ^N অথবা !

      মেলে না এমন লাইনগুলি কেবল প্রদর্শন করুন pattern
    ^R
      নিয়মিত এক্সপ্রেশন মেটাচার্যাক্টর ব্যাখ্যা করবেন না; এটি হ'ল একটি সাধারণ পাঠ্য তুলনা করুন।

    ____________
    নির্দিষ্ট অক্ষরগুলির শুরুতে প্রবেশ করানো বিশেষ হয় pattern; তারা অনুসন্ধানের অংশটি পরিবর্তনের পরিবর্তে অংশ হিসাবে পরিবর্তিত হয় pattern

   (অবশ্যই ^Nএবং যথাক্রমে + এবং + ^Rউপস্থাপন করুন )) CtrlNCtrlR

সুতরাং, উদাহরণস্বরূপ, &dnsশুধুমাত্র লাইন যে প্যাটার্ন মেলে প্রদর্শন করা হবে dns, এবং &!dnsযারা লাইন ফিল্টার পাবেন (বাদ), শুধুমাত্র লাইন যে প্যাটার্ন মিলছে না প্রদর্শন।

/কমান্ডের বিবরণে এটি উল্লেখ করা হয়েছে

    patternহিসাবে আপনার সিস্টেম দ্বারা সরবরাহকৃত রেগুলার এক্সপ্রেশন গ্রন্থাগার দ্বারা স্বীকৃত, একটি রেগুলার এক্সপ্রেশন হয়।

সুতরাং

  • &eth[01]  যুক্ত লাইনগুলি প্রদর্শন করবে eth0বাeth1
  • &arp.*eth0এর arpপরে থাকা লাইনগুলি প্রদর্শন করবেeth0
  • &arp|dns  যুক্ত লাইনগুলি প্রদর্শন করবে arpবাdns

এবং !উপরের যে কোনওটিকে উল্টাতে পারে। সুতরাং আপনার প্রশ্নের উদাহরণ হিসাবে আপনি যে আদেশটি ব্যবহার করতে চান তা হ'ল:

&!event text|something else|the other thing|foo|bar

এছাড়াও অনুসন্ধান করতে এবং (এবং / পরবর্তী / পূর্ববর্তী যেতে) ব্যবহার করুন।/pattern?patternnN


1
এখানে প্রায়! এর মধ্যে less, '&! <1 স্টেট্টার>> ব্যবহার করে আমাকে একটি প্যাটার্ন সহ' লাইনগুলি 'আড়াল করতে দেয়, তবে এটি একবারে কেবল একটি প্যাটার্নে প্রযোজ্য, সুতরাং আমি যদি দ্বিতীয় প্যাটার্নটি খুঁজে পাই এবং' &! <2 তম>> প্রয়োগ করি, প্রথম প্যাটার্নের সাথে মেলে এবং লুকানো ছিল এমন লাইনগুলি এখন দৃশ্যমান। এত কাছে!
বজায় রাখুন

@ ফ্যাকয়ার: একটি কমান্ডের ইতিহাস রয়েছে যা আপনি উপরে এবং ডাউন তীর কীগুলির সাহায্যে অ্যাক্সেস করতে পারেন। সুতরাং টিপুন &!এবং তারপরে একটি তীর কী টিপুন।
প্রধানমন্ত্রী 2Ring

@ ফোকয়ার: এবং আমি সবেমাত্র আবিষ্কার করেছি যে ইতিহাসটি সংরক্ষিত হয়েছে, সুতরাং পরবর্তী সময় আপনি চালানোর সময় আপনার পুরানো নিদর্শনগুলি উপলভ্য হবে less; যদিও এটি রিবুট করার পরে সংরক্ষণ করা হয়েছে তা আমি জানি না।
পিএম 2 রিং

1
@ ইউরিওন যা আমি সর্বশেষে অনুপস্থিত ছিল - কীভাবে একসাথে নিদর্শনগুলি একত্রিত করতে পারি। আমি যদিও আমি আগে পাইপ প্রতীক চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছে, কিন্তু এখন আবার চেষ্টা করব এটি কার্যকর হয়! তাই: & <pattern1> | <pattern2> | <pattern3> pattern1 বা pattern2 বা pattern3 সঙ্গে লাইন মুছে ফেলা হবে
forquare

1
আমি এটি বের করেছিলাম। হোমব্রু ডুপস এর সর্বশেষতম সংস্করণ রয়েছে। আমাকে কেবল বাশ মারতে হয়েছিল কারণ এটি সঠিক ফাইলটি দখল করছিল না (যদিও এটি আমাকে বলেছিল যে এটি / ব্যবহারকারী / স্থানীয় / বিন / তার চেয়ে কম) দখল করছে।
স্পিনলক

7

উপর নির্মাণের কালপুরুষ এর উত্তর , less(1)man পৃষ্ঠা বর্ণনা করে

/pattern

    এন- তম লাইনের জন্য ফাইলটিতে এগিয়ে অনুসন্ধান করুন pattern।  এন 1. ডিফল্ট patternহিসাবে আপনার সিস্টেম দ্বারা সরবরাহকৃত রেগুলার এক্সপ্রেশন গ্রন্থাগার দ্বারা স্বীকৃত, একটি রেগুলার এক্সপ্রেশন হয়। অনুসন্ধান দ্বিতীয় প্রদর্শিত লাইনে শুরু হয় (তবে এটি -aএবং -jবিকল্পগুলি দেখুন যা এটি পরিবর্তন করে)।

    শুরুতে প্রবেশ করা গেলে কয়েকটি চরিত্র বিশেষ pattern; এগুলির অংশ হওয়ার পরিবর্তে তারা অনুসন্ধানের ধরণের পরিবর্তন করে pattern:

    ^N অথবা !

      যে লাইনগুলির সাথে মেলে না তার জন্য অনুসন্ধান করুন pattern
    ^E অথবা *
      একাধিক ফাইল অনুসন্ধান করুন। এটি হ'ল, যদি অনুসন্ধানটি কোনও মিল খুঁজে না পেয়ে বর্তমান ফাইলের শেষের দিকে পৌঁছে যায়, সন্ধানটি কমান্ড লাইন তালিকার পরবর্তী ফাইলটিতে অবিরত থাকবে।
    ^F অথবা @
      কমান্ড লাইন তালিকায় FIRST ফাইলের প্রথম লাইনে অনুসন্ধান শুরু করুন, বর্তমানে স্ক্রিনে প্রদর্শিত -aবা -jবিকল্পগুলির সেটিংস বা নির্বিশেষে ।
    ^K
      patternবর্তমান স্ক্রিনের সাথে মেলে এমন কোনও পাঠ্য হাইলাইট করুন, তবে প্রথম ম্যাচে (কেইইপি বর্তমান অবস্থানে) সরাবেন না।
    ^R
      নিয়মিত এক্সপ্রেশন মেটাচার্যাক্টর ব্যাখ্যা করবেন না; এটি হ'ল একটি সাধারণ পাঠ্য তুলনা করুন।

    ____________
    আদেশগুলি পূর্বে দশমিক সংখ্যা দ্বারা বর্ণিত হতে পারে N নামে পরিচিত হতে পারে ...

   (অবশ্যই ^Nএবং ^Eইত্যাদি, Ctrl+ Nএবং Ctrl+ Eইত্যাদি উপস্থাপন করে) 

এটি যে সক্রিয় এবং একসাথে ভাল কাজ। উদাহরণস্বরূপ, আদেশগুলি&pattern/pattern

  • &!arp|dnsEnter
  • /Ctrl+ +Kfail|fatal|fault|sd[a-z][0-9]Enter

পারেন অনুক্রমে টাইপ করেছেন, গোপন পাবেন (অগ্রাহ্য) ধারণকারী সব লাইন arpবা dns(যেমন grep -v), এবং তারপর, অবশিষ্ট লাইনে, সব ঘটনার হাইলাইট fail, fatal, fault, বা কিছু যে একটি SCSI ডিভাইস নাম (মত দেখায় sd[a-z][0-9])। নোট করুন যে লাইনগুলিতে arpবা dns, এবং failবা অন্য কোনও বিপদজনক শব্দ রয়েছে তা প্রদর্শিত হবে না


2

গত কয়েকমাস ধরে আমি কিছুটা মোহিত হয়েছি fzf

আপনার ক্ষেত্রে, যতদিন প্রসঙ্গ প্রয়োজন হিসাবে নয় (অর্থাত,, grep সমতুল্য এর -A, -Bঅথবা -Cপ্রয়োজন নেই, এবং উপায় দ্বারা, কম এর &একই সীমাবদ্ধতা রয়েছে), তারপর fzf একটি খুব শক্তিশালী হাতিয়ার।

এখানে একটি নির্বোধ উদাহরণ:

printf "%s\n" {aa,bb,cc}{dd,ee,ff}{gg,hh,ii} | fzf

আপনি যদি এটি চালান, এবং ইনপুটগুলি পছন্দসই ইত্যাদিতে খেলেন aa | bb dd | ee !gg !hhতবে দ্রুত যা ঘটছে তা আপনি দেখতে পাবেন।

অপারেটরে Fzf এর ডকুমেন্টেশন অপ্রয়োজনীয় |, তবে আমার সর্বোত্তম অনুমান যে এটি কেবলমাত্র শর্তাবলীর আগেই এবং পরে প্রয়োগ করা হয়, যার অর্থ কার্যত, ওআর এবং এর চেয়ে অগ্রাধিকার নেয় (যা অন্তর্নিহিত ; সমস্ত শর্তগুলি পূর্বনির্ধারিতভাবে এডি-এড হয়) । তবে বেশিরভাগ ক্ষেত্রে এটি কোনও সমস্যা হওয়া উচিত নয় এবং জিনিসগুলি আমার অভিজ্ঞতাতে ঠিক আছে।

ইহাকে একটি লাথি দাও. আমি যখন যা খুঁজছি সত্যিই নিশ্চিত নই এবং যখন প্রসঙ্গে কিছু আসে যায় না তখন জিনিসগুলি ব্রাউজ করার ক্ষেত্রে এটি আশ্চর্যজনকভাবে দরকারী বলে মনে হয়েছিল।

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