से रंगों को हटा रहा है मेरे पास कुछ स्क्रिप्ट है जो रंग उत्पन्न करती है और मुझे इससे छुटकारा पाने की आवश्यकता है।आउटपुट
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript
निर्गम (लॉग फ़ाइल में) है:
java (pid 12321) is [email protected][60G[@[0;32m OK @[0;39m]
मैं कैसे ESC चरित्र यहाँ डाल करने के लिए पता नहीं था, इसलिए मैं उसके स्थान पर @
डाल दिया।
मैं में स्क्रिप्ट बदल दिया है:
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
लेकिन अब यह मुझे (लॉग फ़ाइल में) देता है:
java (pid 12321) is [email protected][60G[ OK ]
मैं भी कैसे हटा सकते हैं इस '@[60G
?
शायद पूरी लिपि के लिए पूरी तरह से रंग को अक्षम करने का कोई तरीका है?
बीएसडी/ओएसएक्स उपयोगकर्ता: हमारे पास आमतौर पर -r विकल्प नहीं है। 'ब्रू इंस्टॉल करें gnu-sed' एक सक्षम संस्करण स्थापित करेगा। 'Gsed' के साथ चलाएं। –
यदि मैं 'echo "$ (tput setaf 1) foo $ (tput sgr0) बार करता हूं" | sed -r "s/\ x1B \ [([0-9] {1,2} (; [0-9] {1,2})?)? [mGK] // g" | बिल्ली-ए', मुझे मिलता है: 'foo^ओ बार $' तो मुझे लगता है कि कुछ पात्र सही ढंग से हटाए नहीं गए हैं, है ना? क्या आप जानते हैं कि कैसे सही करें? – edi9999
@ edi9999 जहां तक मैं कह सकता हूं, अंतर यह है कि 16 रंगों से परे रंग सेटिंग्स ('सेटफ' समर्थन के रूप में) केवल दो की तुलना में अधिक पैरामीटर की आवश्यकता होती है; मेरा regex दो का समर्थन करता है। '*' के लिए पहले '?' आउट को बदलना चाहिए। 'Sgr0' को संभालना संभव है लेकिन एक खोज के आधार पर यह संभवतः इस हैकी रेगेक्स-आधारित उत्तर के दायरे से बाहर बढ़ता है। –