গ্রেপ থেকে গ্রেপ করার পরে রঙিন সংরক্ষণ করুন


140

গ্রেপিংয়ের পরে এলএস কালারিং সংরক্ষণে একটি সিমলার প্রশ্ন রয়েছে তবে এটি আমাকে বিরক্ত করে বলে যে আপনি যদি রঙিন গ্রেপ আউটপুটটিকে অন্য কোনও গ্রেপের সাথে পাইপ করেন তবে রঙটি সংরক্ষণ করা হয়নি।

উদাহরণ হিসাবে grep --color WORD * | grep -v AVOIDপ্রথম আউটপুটটির রঙ রাখে না। তবে আমার জন্য ls | grep FILEরঙ রাখবেন, কেন পার্থক্য?


2
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি ইউনিক্স কমান্ডের ব্যবহার সম্পর্কে, ইউনিক্স.স্ট্যাকেক্সেঞ্জ ডটকমের অন্তর্ভুক্ত
র‌্যাপ্টর

উত্তর:


162

grepকখনও কখনও রঙ আউটপুট অক্ষম করে, উদাহরণস্বরূপ পাইপে লেখার সময়। আপনি এই আচরণটি দিয়ে ওভাররাইড করতে পারেনgrep --color=always

সঠিক কমান্ড লাইন হবে

grep --color=always WORD * | grep -v AVOID

এটি বেশ ভার্বোজ, বিকল্পভাবে আপনি কেবল লাইন যুক্ত করতে পারেন

alias cgrep="grep --color=always"

আপনার .bashrcউদাহরণস্বরূপ এবং cgrepরঙিন গ্রেপ হিসাবে ব্যবহার করুন । নতুন সংজ্ঞা দেওয়ার সময় grepআপনি স্ক্রিপ্টগুলি নিয়ে সমস্যায় পড়তে পারেন যা নির্দিষ্ট আউটপুটে নির্ভর করে grepএবং এসকিআই এস্কেপ কোড পছন্দ করে না।


4
এই সমাধানটি কেবল নির্দিষ্ট ভাগ্যবান পরিস্থিতিতে কাজ করে। নীচে অ্যান্ডারসনভম এর উত্তর দেখুন।
স্টুড 15

আমার ক্ষেত্রে (উবুন্টু) আমি ইতিমধ্যে ওরফে ছিলাম grepalias grep='grep --color=autoসুতরাং ~/.bashrcপ্রথম স্থানটিতে এটি সংজ্ঞায়িত হয়েছিল সেখানে আমার কেবল আমার পরিবর্তন করতে হবে।
sobi3ch

আমার জন্য কাজ করছেন না - এই দৃশ্যের মতোই স্ট্যাকওভারফ্লো.com
নম জি ভিইউ

এই দুর্দান্ত সৃজনশীল ধারণাটি কেবল সহজ এবং কার্যক্ষম স্ট্যাকওভারফ্লো.com
নাম জি ভিইউ

প্রশ্নটি দ্বিতীয় গ্রেপকে কীভাবে প্রথমটির রঙটি ছাপিয়ে যায় তা নয়। এটি তার কোনও উত্তর নয়।
johannes_lalala

74

পরামর্শের একটি শব্দ:

ব্যবহার করার সময় grep --color=always, আসল স্ট্রিংগুলি পরবর্তী পাইপে প্রবেশ করাতে পরিবর্তন করা হবে। এটি নিম্নলিখিত পরিস্থিতির দিকে নিয়ে যেতে পারে:

$ grep --color=always -e '1' * | grep -ve '12'
11
12
13

যদিও বিকল্পটির -ve '12'মাঝের রেখাটি বাদ দেওয়া উচিত, এটি হ'ল না কারণ 1এবং এর মধ্যে বর্ণ বর্ণ রয়েছে 2


আপনি যদি ব্যবহার করেন --color=autoতবে এটি অন্য কোথাও পাইপ করা উচিত এবং রঙগুলি পুরোপুরি দমন করা উচিত, তবে এটি একধরণের উদ্দেশ্যকে পরাস্ত করে। আপনি যদি এখনও রঙিন ফলাফল চান, আমার ধারনা আপনি শেষ পাইপ ব্যবহার করে এটি আবার গ্রেপ করতে পারেন --color
andersonvom

2
ম্যাক ওএস এক্স-তে, অন্ততপক্ষে @ অ্যান্ডারসনভমের পরামর্শ অনুসারে শেষ পাইপে রঙ করা কাজ করে না। নিশ্চিত নয় কেন; সম্ভবত এটি বাদ প্যাটার্ন রঙ? --color=alwaysআমি ধরে নিয়েছি, উপরে কাজ করা ক্যাফ্যাটগুলি দিয়ে কাজ করে।
ব্যবহারকারী 766353

3
আপনার মত প্রকাশের ক্ষেত্রে আপনার একই ধরণের গ্রেপ প্যাটার্নটি থাকতে হবে। আমি কেবল এটি একটি ম্যাকের জন্য পরীক্ষিত করেছি: http://i.imgur.com/BhmwAlF.png
andersonvom

9

আপনার পাইপের শেষে কেবল একই গ্রেপ কমান্ডটি পুনরাবৃত্তি করুন।
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD


2
কমান্ডগুলি বিপরীত করা কি একই ফলাফল প্রদান করবে না? grep -v AVOID * | grep WORD
ব্রাইডন গিবসন

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