সম্পূর্ণ কমান্ড আউটপুট প্রদর্শন করার সময় কনসোল অনুসন্ধানের আউটপুট হাইলাইট করুন


19

আমি যখন উদাহরণ ব্যবহার করি তখন আমি cat file.txt | grep --color=tty "pattern"যে প্যাটার্নটি হাইলাইট করে তা পাই get যখন আমি প্রতিটি হিট প্রায় আরো কিছু প্রসঙ্গ চাই,, grep হয়েছে -A, -Bএবং -Cপ্যারামিটার।

যাইহোক, আমি পুরো ফাইলটি (বা যে কোনও কমান্ড আউটপুট) প্রদর্শন করতে এবং একটি নির্দিষ্ট প্যাটার্নটি হাইলাইট করতে চাই। এই জাতীয় হাইলাইট কমান্ড বা সরঞ্জাম বিদ্যমান?


আপনি এখন যা করতে চান তা আপনি ইতিমধ্যে যা করছেন তার থেকে আলাদা কীভাবে?
বেনজমিন ব্যানিয়ার

উত্তর:


22

Unix.stackexchange.com এ একটি উত্তর ছিল যা এই ঝরঝরে কৌশল ছিল:

grep -E --color 'pattern|$' file.txt

অথবা

grep --color 'pattern\|$' file.txt

যা আপনার প্যাটার্নের সাথে বা প্রতিটি লাইনের শেষের সাথে মিলবে। কেবল প্যাটার্নটি হাইলাইট করা হয়।


+1 সাধারণ এবং সহজেই zgrep, bzgrep ইত্যাদির সাথে অভিযোজ্য N
স্টিফান লাসিউইস্কি

সার্বক্ষণিক - কালার টাইপ করার কোনও উপায় আছে কি? আমি মনে করি এটি রঙিন বিকল্পটি গ্রেপের সাথে এম্বেড করার জন্য এটি বেশ বেসিক, কেন আমরা প্রতি একক বার স্পষ্টভাবে রঙে টাইপ করেছি তা নিশ্চিত নয়। আমি স্ক্রিপ্টগুলি তৈরি করার চেষ্টা করেছি বলছি গ্রেপডি ফাইলগুলিতে গ্রেপ - কালার $ 1 $ 2 বলা আছে তবে এটি কার্যকর হয় না। এখানে দয়া করে ঠিক করার জন্য কোনও ক্লু
শ্রুজন কুমার গুল্লা

1
@ লর্ডলুপাইন: GREP_OPTIONS='--color'আপনার যুক্ত করুন ~/.bashrc(বা এতে অন্তর্ভুক্ত করার জন্য সেটিংসটি পরিবর্তন করুন --color) এটি কার্যকর করার জন্য আপনাকে একটি নতুন টার্মিনাল শুরু করতে হবে বা বর্তমান টার্মিনালের কমান্ড লাইনে সেই কার্যটি কার্যকর করতে হবে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

9

আমি চাই ACK

ack --passthru somepattern filename

এটি গ্রেপের মতো, তবে আরও ভাল। এটি ডিফল্টরূপে হাইলাইট করে এবং --passthruবিকল্পের সাহায্যে এটি কেবল মিলে যাওয়া লাইনের পরিবর্তে পুরো ফাইলটি (বা স্ট্যান্ডার্ড ইনপুট) দেখায়।


1
আপনি যদি আকিকে আউটপুট পাইপ করার চেষ্টা করছেন, যেমন থেকে tail, তবে আপনাকেও --filterবিকল্পটি ব্যবহার করতে হবে। উদাহরণস্বরূপ:tail -f myLogFile | ack --filter --passthru pattern
স্প্যারোলেট

5

আমিও less(বা এ জাতীয়) ব্যবহারের পরামর্শ দিচ্ছি , তবে আমি আপনাকে আরও একটি ড্যাডিক্টিকাল সমাধান দেখাতে চাই। একবার আপনি এই ফাংশনটি সংজ্ঞায়িত করেছেন:

ফাংশন হাইলাইট ()
{
    সেড "s / $ 1 /` টিপুট স্মোস` & put tput rmso` / g "" $ {2: -} "
}

আপনি এটি এইভাবে ব্যবহার করতে পারেন:

command | highlight pattern
highlight pattern file.txt

নোট: এই সংস্করণ, কেস সংবেদনশীল যে পরিবর্তন শুধু পরিশেষে যোগ iপর gsedঅভিব্যক্তি।


1
আমি tputমানগুলি হার্ডকোডিংয়ের পরিবর্তে প্রার্থনা করব । এইভাবে আপনি ব্যবহার এড়াতে echo -eপারেন, যা অন্যান্য প্রভাবও ফেলতে পারে।
ইগনাসিও ওয়াজকেজ-আব্রামস

আপনি একেবারে ঠিক বলেছেন, আমি এটি কোনও ভাগ্য ছাড়াই অনুসন্ধান করেছি। ধন্যবাদ।
সিউরাস

এই সংস্করণটির জন্য ক্যাপচারিং বন্ধনীগুলির প্রয়োজন নেই এবং এটি চালানো যেতে পারে prog | highlight "pattern"বা highlight "pattern" file:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

আমার sedদক্ষতা মূলত বিদ্যমান নেই। সংবেদনশীল প্যাটার্ন কেসের সাথে মেলে যাতে আমার কীভাবে এটি পরিবর্তন করতে হবে। যাইহোক, আমি এটিকে আমার ব্যাশ_ফিউশনগুলিতে অন্তর্ভুক্ত করব। আপনাকে অনেক ধন্যবাদ.
DerMike

@ ডেরমাইক: এখন এটি কেস সেনসিটিভ।
সিআরস

3

পাসিং -Cকরতে grepপর্যাপ্ত উচ্চমূল্য সঙ্গে এই কাজ করতে হবে।


আমি শপথ করতে পারলাম শেষ বার চেষ্টা করার পরে আমি অন্য কিছু পেয়েছি। (প্রতিটি প্রসঙ্গে '-----' বিভক্তকারীদের সাথে মেলে match
DerMike

পর্যাপ্ত প্রসঙ্গ না থাকলে এটি প্রতিটি ম্যাচ আলাদা করে দেবে।
ইগনাসিও ওয়াজকেজ-আব্রামস

3

less নিদর্শন হাইলাইট হয়, তাই

less -p 'mypattern' file.txt

অথবা

ridiculously | long | pipe | less

এবং তারপরে /হাইলাইট করা হবে এমন একটি প্যাটার্ন অনুসন্ধান করার জন্য কম ।

সাইড নোট:

আপনি আপনার আদেশটি উন্নত করতে পারেন, উদাহরণস্বরূপ উপকরণ
সেট করুন alias grep="grep --color=tty"এবং এটির মতো ব্যবহার করুন:

grep 'mypattern' file.txt;

1
আপনার GREP_OPTIONS ব্যবহার করা থেকে বিরত থাকা উচিত, পরিবর্তে উপনামটি ব্যবহার করুন। দেখুন: বাগস.লাঞ্চপ্যাড.এন.বুন্টু
+

প্রাইম নন নোসেয়ার। সরানো হয়েছে।
ক্যাজুয়াল কোডার

GREP_OPTIONS বিভিন্ন ধরণের grep(zgrep, bzgrep, bzfgrep, ইত্যাদি) দ্বারা ব্যবহৃত হয় সুতরাং আপনি যদি সব ধরণের গ্রেপ ধারাবাহিকভাবে আচরণ করতে চান তবে আপনাকে প্রতিটি আকারের গ্রেপের জন্য একটি উপকরণ সেট করতে হবে। @ উপরে ক্যাজুয়াল এর নতুন উত্তরটি এর মতো bzgrep pattern /var/log/messages.?.gzকোনও কিছুর জন্য নয় , এটি একটি উদাহরণ যেখানে রঙ হাইলাইট করা খুব সহায়ক be
স্টিফান লাসিউইস্কি

1

একটি দুর্দান্ত সুপারক্যাট সরঞ্জাম রয়েছে, যা ঠিক সেই উদ্দেশ্যেই কাজ করে। এটি উভয়ই আপনার কনসোল আউটপুটটিকে রঙিন করতে পারে এবং আপনার ইনপুট থেকে একটি "হাইলাইটেড" এইচটিএমএল উত্পাদন করতে পারে।


ধন্যবাদ, এটি প্রতিশ্রুতিবদ্ধ দেখায়। যাইহোক, আমি এই মুহূর্তে এটি কাজ করবে বলে মনে হচ্ছে না।
ডারমাইক

1
এর কনফিগার ফাইলগুলিতে ( /etc/supercatউবুন্টুতে) দেখুন, যা রঙিন নিয়মগুলি সেট করে, সেগুলি মূলত রঙ / রেজেক্সপ জোড়া (কিছু অতিরিক্ত নিয়ম সহ) হয়; ম্যান পেজটিও ছোট এবং সুন্দর।
ইভান তারাসভ

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