রঙ স্যুইচিং পাঠ্যের মধ্যে এম্বেড সিকোয়েন্সগুলির মাধ্যমে করা হয় । অবিচ্ছিন্নভাবে, প্রোগ্রামগুলি এএনএসআই অব্যাহতি সিকোয়েন্সগুলি জারি করে , কারণ এটি আজকাল প্রায় সমস্ত টার্মিনাল সমর্থন করে।
ফোরগ্রাউন্ডের রঙটিকে লাল রঙে পরিবর্তন করতে পালানোর ক্রমটি হ'ল \e[31m
, যেখানে \e
একটি এস্কেপ চরিত্র (অষ্টাল 033, হেক্সাডেসিমাল 1 বি, যা ইএসসি হিসাবে পরিচিত ^[
এবং অন্যান্য বিভিন্ন উপাধি) নির্ধারণ করে। 30-39 পরিসরের নম্বরগুলি অগ্রভাগের রঙ নির্ধারণ করে; অন্যান্য সংখ্যা বিভিন্ন বৈশিষ্ট্য সেট করে। \e[0m
সমস্ত বৈশিষ্ট্য তাদের ডিফল্ট মানটিতে পুনরায় সেট করে। cat -v
প্রোগ্রামটি কী প্রিন্ট করে তা যাচাই করার জন্য এটি চালান , এটি \e[0;31m
প্রথমে সমস্ত বৈশিষ্ট্যগুলি পুনরায় সেট \e[3;31
করতে , বা তাত্পর্যগুলি স্যুইচ করতে (যা অনেক টার্মিনাল সমর্থন করে না) ব্যবহার করতে পারে some
Ksh, bash বা zsh এ, আপনি $'…'
কোটসের ভিতরে ব্যাকস্ল্যাশ পলায়ন সক্ষম করতে ব্যবহার করতে পারেন , যা আপনাকে $'\e'
পালানোর অক্ষর পেতে টাইপ করতে দেয় । নোট করুন যে তারপরে আপনাকে যে কোনও ব্যাকস্ল্যাশ যেতে হবে দ্বিগুণ করতে হবে grep
। ইন /bin/sh
, আপনি "$(printf \\e)"
একটি আক্ষরিক পালানোর অক্ষর ব্যবহার বা টাইপ করতে পারেন ।
জিএনইউ grep -o
বিকল্পের সাহায্যে নিম্নলিখিত স্নিপেটটি লাল টেক্সট ফিল্টার করে, ধরে নেওয়া হয় যে এটি পালানোর ক্রম দিয়ে শুরু \e[31m
হয়, হয় উভয় \e[0m
বা \e[30m
একই লাইনের সাথে শেষ হয় এবং এতে এম্বেডেড পালানোর অনুক্রম থাকে না।
grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'
নীচের awk
স্নিপেট লাল পাঠ্য নিষ্কাশন করে, এমনকি এটি বহুগুণেও থাকে।
awk -v RS='\033' '
match($0, /^\[[0-9;]*m/) {
color = ";" substr($0, 2, RLENGTH-2) ";";
$0 = substr($0, RLENGTH+1);
gsub(/(^|;)0*[^03;][0-9]*($|;)/, ";", color);
red = (color ~ /1;*$/)
}
red'
এখানে রঙের পরিবর্তনকারী কমান্ডগুলি ধরে রাখার একটি প্রকরণ রয়েছে, আপনি যদি একাধিক রং (এখানে লাল এবং ম্যাজেন্টা) ফিল্টার করছেন তবে তা কার্যকর হতে পারে।
awk -v RS='\033' '
match($0, /^\[[0-9;]*m/) {
color = ";" substr($0, 2, RLENGTH-2) ";";
printf "\033%s", substr($0, 1, RLENGTH);
$0 = substr($0, RLENGTH+1);
gsub(/(^|;)0*[^03;][0-9]*($|;)/, ";", color);
desired = (color ~ /[15];*$/)
}
desired'
>&1
? আমি বলতে চাইছি, লাল জিনিসগুলি দূরে যায় না আপনি2>/dev/null
, তাই না?