वर्ण ^[[37mऔर ^[[0mका हिस्सा हैं एएनएसआई भागने दृश्यों (सीएसआई कोड) । इन विनिर्देशों को भी देखें ।
GNU का उपयोग करना sed
sed 's/\x1b\[[0-9;]*m//g'
\x1b(या \x1B) पलायन विशेष चरित्र है
( sedविकल्प का समर्थन नहीं करता है ) \eऔर\033
\[ पलायन क्रम का दूसरा पात्र है
[0-9;]* रंग मूल्य है
m एस्केप सीक्वेंस का अंतिम पात्र है
⚠ MacOS पर, डिफ़ॉल्ट sedआदेश जैसे विशेष वर्ण का समर्थन नहीं करता \eके रूप में द्वारा बताया SLM और steamer25 टिप्पणी में। इसके बजाय उपयोग करें gsedकि आप का उपयोग कर स्थापित कर सकते हैं brew install gnu-sed।
ओपी की कमांड लाइन के साथ उदाहरण: (ओपी का अर्थ है मूल पोस्टर)
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' |
sed 's/\x1b\[[0-9;]*m//g'
टॉम हेल ग्राफिक्स मोड (रंग) से बचने के क्रम के लिए [a-zA-Z]केवल पत्र के बजाय अन्य सभी एस्केप अनुक्रमों को हटाने का सुझाव देता है m। लेकिन [a-zA-Z]बहुत चौड़ा हो सकता है और बहुत अधिक निकाल सकता है। मिचेल फेल्स्की और मिगुएल मोटा ने क्रमशः [mGKH]और केवल कुछ भागने के दृश्यों को हटाने का प्रस्ताव दिया [mGKF]। ब्रिटन केरीन इंगित करता है कि त्रुटि / चेतावनी से रंगों को हटाने के Kअलावा भी उपयोग किया जाना चाहिए (रीडायरेक्ट करना न भूलें )।mgccgcc 2>&1 | sed...
sed 's/\x1b\[[0-9;]*m//g' # Remove color sequences only
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' # Remove all escape sequences
sed 's/\x1b\[[0-9;]*[mGKH]//g' # Remove color and move sequences
sed 's/\x1b\[[0-9;]*[mGKF]//g' # Remove color and move sequences
Last escape
sequence
character Purpose
--------- -------------------------------
m Graphics Rendition Mode (including Color)
G Horizontal cursor move
K Horizontal deletion
H New cursor position
F Move cursor to previous n lines
का उपयोग करते हुए perl
sedकुछ ऑपरेटिंग सिस्टम पर स्थापित संस्करण सीमित हो सकता है (जैसे macOS)। आदेश perlमें अधिक ऑपरेटिंग सिस्टम पर आम तौर पर स्थापित / अपडेट करने में आसान होने का लाभ है। एडम काट्ज पीसीआरई में \e(उसी के रूप में \x1b) उपयोग करने का सुझाव देते हैं ।
फ़िल्टर करने के लिए आप कितनी आज्ञाओं के आधार पर अपना regex चुनें:
perl -pe 's/\e\[[0-9;]*m//g' # Remove colors only
perl -pe 's/\e\[[0-9;]*[mG]//g'
perl -pe 's/\e\[[0-9;]*[mGKH]//g'
perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
perl -pe 's/\e\[[0-9;]*m(?:\e\[K)?//g' # Adam Katz's trick
ओपी की कमांड लाइन के साथ उदाहरण:
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' \
| perl -pe 's/\e\[[0-9;]*m//g'
प्रयोग
जैसा कि स्टुअर्ट कार्डल की टिप्पणी से पता चलता है , इस sedकमांड लाइन का उपयोग प्रोजेक्ट एनगिनेक्स बैड बॉट (1000 स्टार) द्वारा ईमेल रिपोर्ट को साफ करने के लिए किया जाता है ;;
moreयाless -Rजो टेक्स्ट एडिटर के बजाय एस्केप कोड को रंग के रूप में व्याख्या कर सकते हैं।