यदि आप गैर-मुद्रण योग्य वर्णों को दिखाने के | sed -n lलिए उस tailआदेश में एक जोड़ते हैं , तो आपको संभवतः कुछ दिखाई देगा:
N\bNA\bAM\bME\bE
यही है, प्रत्येक चरित्र को Xबैकस्पेस के रूप में लिखा गया है X। आधुनिक टर्मिनलों पर, चरित्र खुद के ऊपर लिखा जा रहा है (जैसा कि बैकस्पेस उर्फ बीएस उर्फ \bउर्फ ^Hचरित्र है जो बिना किसी अंतर के कर्सर को एक कॉलम बाईं ओर ले जाता है)। लेकिन प्राचीन टेली-टाइपराइटरों में, यह चरित्र को बोल्ड में प्रदर्शित करने का कारण बनता है क्योंकि यह दो बार स्याही के रूप में मिलता है।
फिर भी, पेजर बोल्ड को समझने के लिए उस प्रारूप को पसंद करते हैं more/ lessकरते हैं, इसलिए अभी भी roffबोल्ड टेक्स्ट का उत्पादन करना है।
कुछ पुरुष कार्यान्वयन इस तरह से कॉल करेंगे roffकि उन अनुक्रमों का उपयोग नहीं किया जाता है (या आंतरिक रूप col -b -p -xसे उन्हें पट्टी करने के लिए कॉल करें जैसे कि man-dbकार्यान्वयन के मामले में (जब तक कि MAN_KEEP_FORMATTINGपर्यावरण चर सेट नहीं किया जाता है), और आउटपुट का पता लगाने पर पेजर को आमंत्रित न करें। एक टर्मिनल पर नहीं जा रहा है (इसलिए man bash | grep NAMEवहां काम करेगा), लेकिन आपका नहीं।
आप col -bउन दृश्यों को हटाने के लिए उपयोग कर सकते हैं ( अंडरलाइन के लिए अन्य प्रकार ( _बीएस X) और साथ ही) हैं।
जीएनयू का उपयोग कर सिस्टम के लिए roff(जीएनयू या FreeBSD) की तरह, आप उन दृश्यों सुनिश्चित करते हुए पहली जगह में इस्तेमाल किया जा रहा से बचने कर सकते -c -b -uविकल्प को पास किया जाता grottyसुनिश्चित करते हुए उदाहरण के लिए, -P-cbuविकल्प के लिए पारित कर दिया है groff।
उदाहरण के लिए एक आवरण लिपि बनाकर, जिसे कहा जाता है groff:
#! /bin/sh -
exec /usr/bin/groff -P-cbu "$@"
कि आपने / usr / bin / groff के आगे रखा $PATH।
MacOS के साथ ' man(GNU का उपयोग करके roff), आप एक के man-no-overstrike.confसाथ बना सकते हैं :
NROFF /usr/bin/groff -mandoc -Tutf8 -P-cbu
और कॉल करें man:
man -C man-no-overstrike.conf bash | grep NAME
जीएनयू के साथ फिर भी roff, यदि आप GROFF_SGRपर्यावरण चर निर्धारित करते हैं (या GROFF_NO_SGRसंकलन समय पर कैसे चूक को निर्धारित किया गया है) के आधार पर चर सेट नहीं करते हैं , तो grotty(जब तक कि यह -cविकल्प पारित नहीं होता है) एएनएसआई एसजीआर टर्मिनल एस्केप सीक्वेंस का उपयोग करेगा चरित्र विशेषताओं के लिए उन बी एस चाल के। विकल्प के lessसाथ बुलाए जाने पर उन्हें समझें -R।
FreeBSD का आदमी तब तक विकल्प के grottyसाथ कॉल करता -cहै जब तक कि आप MANCOLOR वैरिएबल सेट करके रंग नहीं पूछ रहे हैं (जिसमें एएनएसआई SGR एस्केप सीक्वेंस का उपयोग करने के लिए डिफ़ॉल्ट रूप से -cपास नहीं होता है grottyऔर grottyवापस लौटता है)।
MANCOLOR=1 man bash | grep NAME
वहां काम करेंगे।
डेबियन पर, GROFF_SGR डिफ़ॉल्ट नहीं है। यदि तुम करो:
GROFF_SGR=1 man bash | grep NAME
हालाँकि, क्योंकि manstdout एक टर्मिनल नहीं है, यह अपने आप में एक GROFF_NO_SGRचर भी पास कर लेता है grotty(मुझे लगता है कि यह col -bpxबीएस दृश्यों को स्ट्रिप करने के लिए उपयोग कर सकता है क्योंकि colयह नहीं जानता कि एसजीआर अनुक्रमों को कैसे छीनना है, हालांकि यह अभी भी है यह करता है MAN_KEEP_FORMATTING) जो हमारे ऊपर हावी है GROFF_SGR। आप इसके बजाय कर सकते हैं:
GROFF_SGR=1 MANPAGER='grep NAME' man bash
(एक टर्मिनल में) एसजीआर से बचने के क्रम के लिए।
उस समय, आप देखेंगे कि उनमें से कुछ NAME टर्मिनल पर (और एक less -Rपेजर में) बोल्ड दिखाई देते हैं । यदि आप आउटपुट sed -n l( MANPAGER='sed -n /NAME/l') को खिलाते हैं , तो आपको कुछ ऐसा दिखाई देगा:
\033[1mNAME\033[0m$
\e[1mएएनएसआई संगत टर्मिनलों में बोल्ड को सक्षम करने के लिए अनुक्रम कहां है, और \e[0mडिफ़ॉल्ट पर सभी एसजीआर विशेषताओं को वापस करने का अनुक्रम है।
उस पाठ पर grep NAMEकाम करता है जिसमें वह पाठ सम्मिलित है NAME, लेकिन आपको अभी भी समस्या हो सकती है यदि पाठ की तलाश में जहां उसके कुछ भाग बोल्ड / कमतर हों ...