গ্রেপ ইনপুট দিয়ে আমি কীভাবে রঙের কোডগুলি রাখতে পারি?


15

যদি আমি পরপর দুটি grepকমান্ড ব্যবহার করি , যেমন:

echo "foo bar" | grep foo | grep bar

তারপরে প্রথম প্যাটার্ন ("foo") হাইলাইট করা হয় না। আসলে, দেখে মনে হচ্ছে যে গ্রেপ তার ইনপুট থেকে রঙের কোডগুলি সরিয়ে দেয়। এটি রোধ করার কোনও উপায় আছে কি?


একই উত্তর সহ অন্য একটি প্রশ্ন: আপনি কীভাবে বাশ ফাংশনটির মধ্যে রঙিন আউটপুট একটি গ্রেপতে পুনরুদ্ধার করতে পারেন?
ক্যামিল গৌডেসুন

উত্তর:


23

ব্যবহার --color=always

grepপাইপ (বা ফাইল) এ আউটপুট থাকলে সনাক্ত করে। আউটপুট ফাইল করার সময় আপনি কখনই রঙ চান না - কারণ এটি টার্মিনালের জন্য এস্কেপ ক্রম। সাধারণত:

foo ^[[01;31m^[[Kbar^[[m^[[K

যেমন থেকে:

grep pattern file > result

ওভাররাইড ব্যবহার --color=always

grep --color=always pattern file | ...

উদাহরণ:

ফাইল থাকা:

ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz

তারপর

grep --color=always ID file | grep --color=always 2013 | grep foo

রঙ হবে ID, 2013এবং foo

grep --color=always ID file | grep 2013 | grep foo

রঙ হবে IDএবং foo, কিন্তু না 2013

1 গুরুত্বপূর্ণ: আপনার এটিও মনে রাখতে হবে যেরঙগুলি থেকেযুক্ত বিশৃঙ্খলা শৃঙ্খলে পরবর্তী কমান্ডে প্রেরণ করা হয়েছে। একবার আইডি রঙিন হয়ে গেলে আপনি (স্বাচ্ছন্দ্যে) মেলাতে পারবেন নাID=111


কিছু উপলক্ষে কেউ সম্ভবত ফাইলের মধ্যে টার্মিনাল রঙ চান । যেমন চেষ্টা করুন

 grep --color=always foo file > result
 cat result

যদিও ফলাফল ফাইল খুব সীমিত বহনযোগ্যতা হবে।


রঙ নিজেই একটি এক্সটেনশন।


ভাল @ এসএলএম দ্বারা উল্লিখিত হিসাবে , আপনি যুক্ত করতে পারেন:

export GREP_OPTIONS="--color=always"

আপনার .bashrcইত্যাদির কাছে, তবে আপনি যদি কোনও কারণে সত্যই বোঝা যায় না এবং এখনও তা করতে চান না don't এটি 1 টিgrep উপরে উল্লিখিত সত্যের কারণে বিভিন্নভাবে ভেঙে যাবে ।

aliasযদি আপনি এটি প্রায়শই ব্যবহার করেন তবে একটি যুক্ত করুন ।

 alias cgrep='grep --color=always'

GREP_OPTIONSএবং --color তিনটি বিকল্প নেওয়া : never, autoএবং always। দুটি প্রথমে বিবেচিত হওয়া উচিত GREP_OPTIONS

আপনি পৃষ্ঠাগুলিতে বা gnu গ্রেপ এও পরীক্ষা GREP_COLORSকরে দেখতে manপারেন ।


এই পদ্ধতিগুলির পক্ষে সম্পর্কে আরও বিস্তারিত এখানে জানুন
স্ল্যাম

1
এটিও উত্তরে যুক্ত করুন: export GREP_OPTIONS="--color=always"একটি .bashrc এ বিকল্পগুলি যে কোনও গ্রেপের জন্য ডিফল্ট করে তোলে এবং আপনি এটি বেশ পেরেক দিয়েছিলেন!
slm

এই সুপার ইউসার প্রশ্নোত্তরে ভাল জিনিস: superuser.com
স্ল্যাম

"গ্রেপ সনাক্ত করে যদি আউটপুটটি পাইপে থাকে" - আহা! এটি কী, গ্রেপ কোনও পাইপের অংশ না থাকলে রঙ করছে না। এই ধরণের জিনিসটির বিরুদ্ধে একটি বিকল্প নীতি থাকতে হবে: - /
Chris2048

@ Chris2048: এটি বেশিরভাগ সরঞ্জামগুলির জন্য টার্মিনালে রঙ মুদ্রণের জন্য আদর্শ। এটি কীভাবে সনাক্ত করা যায়, এবং এটি ওএসএক্স নেটিভ এবং জিএনও কোর্টিলগুলিতে উদাহরণস্বরূপ ls এবং রঙগুলির দ্বারা কিছু সমস্যা দেখায় এটির মাধ্যমে আপনি আরও কিছু বিশদ খুঁজে পেতে পারেন । ls
রুনিয়াম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.