वर्ण ^[[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
अलावा भी उपयोग किया जाना चाहिए (रीडायरेक्ट करना न भूलें )।m
gcc
gcc 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
जो टेक्स्ट एडिटर के बजाय एस्केप कोड को रंग के रूप में व्याख्या कर सकते हैं।