`हाइलाइट` कमांड


11

क्या कोई कमांड है जिसे आसानी से हाइलाइट करने के लिए इस्तेमाल किया जा सकता है (रंगों के साथ, बोल्ड टेक्स्ट या उल्टा बैक- / फोरग्राउंड) स्टड में पूरे स्ट्रिंग को पास करते समय स्टिंग में विशिष्ट तार? मैं सोच रहा हूँ यह निर्माण , लेकिन अगर यह पहले से मौजूद है मैं नहीं बल्कि सिर्फ उसका प्रयोग करेंगे। कुछ वांछित विशेषताएं:

  1. अलग-अलग हाइलाइटिंग स्ट्रिंग्स को एक स्वचालित तरीके से, अलग-अलग हाइलाइट किया जाता है। उदाहरण के लिए, पहली स्ट्रिंग को लाल रंग में हाइलाइट किया जाएगा, दूसरा हरे रंग में, तीसरा नीले रंग में मैनुअल कॉन्फ़िगरेशन के बिना
  2. रंग समर्थन का पता लगाता है और उन पर उपलब्ध बोल्ड / इनवर्टेड / अन्य हाइलाइटिंग विधियों पर वापस आता है।
  3. नियमित अभिव्यक्ति और शाब्दिक तार के मिलान की अनुमति दें।
  4. अधिमानतः कुछ स्मार्ट करता है यदि मैच ओवरलैप करते हैं, जैसे "फ़ॉबर" और "बर्बर"।
  5. रंग कोड के अलावा सिवाय स्टड और स्टडआउट के बीच कुछ भी संशोधित नहीं है।


ऊ, अच्छा सवाल। मैं इस सटीक बात की जरूरत है और कुछ लिख समाप्त हो गया, लेकिन यह सिर्फ रंग कोडित तय तार, इसके किसी भी आप सूचीबद्ध सुविधाओं नहीं था
माइकल Mrozek

एक नई उपयोगिता लिखने के बजाय, यह खुद को grep के अतिरिक्त के रूप में देखने के लिए सुपर-भयानक होगा।
mattdm

1
उचित यूनिक्स दर्शन एक नई उपयोगिता होगी जिसे न केवल grep बल्कि अन्य धाराओं से भी पाइप किया जा सकता है। मुझे संदेह है कि कम से कम एक या एक से अधिक पर्ल मॉड्यूल हैं जो संभवतः आपके लिए ऐसा कर सकते हैं, हालांकि ...
Shadur

1
@ गिल्स: यह प्रश्न बहुत अधिक दायरे में सीमित है। वास्तव में, इसे पढ़ना एक कारण था जिससे मैंने यह प्रश्न बनाया था - अधिक सामान्य और लचीला समाधान पूछने के लिए।
l0b0

जवाबों:


4

शायद राडोवन गारबिक के जेनेरिक Colouriser (grc) ? यह तर्क के रूप में एक विन्यास फाइल की उम्मीद करता है और रेगेक्सपी के साथ काम करता है। तो विन्यास के बिना काफी नहीं है, लेकिन आप प्रक्रिया प्रक्रिया प्रतिस्थापन ( <(list)) का उपयोग कर सकते हैं , इसलिए मैन्युअल कॉन्फ़िगरेशन के बिना सभी तरीकों से :-)


पृष्ठ को खोलने की आवश्यकता के बिना स्पष्ट करने के लिए (और इसे खोजने योग्य बनाने के लिए), "यह एक" == जेनेरिक कोलोराइज़र ; grc और grcat ... धन्यवाद, मुझे यह पसंद है।
पीटर।

grcएक सहायक स्क्रिप्ट है grcat:। यहाँ लाल रंग में सभी बड़े अक्षरों को रंगने का एक उदाहरण दिया गया है। चरण 1: कॉन्फ़िगर फ़ाइल सेट करें: printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps चरण 2; इसका उपयोग करें: echo Hello World | grcat red-caps... मैन पेज 3 कॉन्फिग डायरेक्टरीज़ को खोजता है, और फिर सुझाव देता है (?) कि कॉनफ़िगर फ़ाइल एक पूर्ण पथ हो सकती है, लेकिन कॉन्फ़िग फ़ाइल खोजने का यह अंतिम तरीका केवल मेरे लिए सापेक्ष पथों के साथ काम करता है (grc) संस्करण 1.3)
पीटर।

5

बचाव के लिए सिड!

आप इसमें सुधार कर सकते हैं (जैसा कि वास्तव में इसकी आवश्यकता है) लेकिन यह बहुत अच्छी तरह से काम करता है।

$ cat >~/bin/hilight <<EOF
#!/bin/bash
while [ $# -gt 0 ]
do
 COMANDO=$COMANDO's/'$1$'/\033[01;'$2$'m\033[K\\0\033[m\033[K/g\n'
 shift;shift;
done

sed -e "$COMANDO"
EOF

सादगी के लिए, hilight दलीलों की जोड़ी को स्वीकार करती है (पहला मैच, दूसरा रंग) इस लिपि में अट्रिब्यूट हमेशा बोल्ड होता है

रंग भागने की सुरक्षा देखने के लिए या यह आज़माने के लिए आदमी को सांत्वना दें

for attrib in $(seq 0 12); do
  for color in $(seq 30 37) $(seq 40 47) $(seq 90 97); do
    printf %b " $attrib $color:\033[$attrib;${color}mhi, dudes\033[m"
  done
done

इस कार्य का उपयोग करने के रूप में इसकी महत्वपूर्ण कमियां हैं:

$ dmesg | hilight \\[ 34 ] 34

लेकिन यह बिल्कुल नहीं:

$ dmesg | hilight \\[ 34 ] 34 [[:digit:]] 31

क्योंकि [: अंक:] पिछले sustitutions पर बच secuences में संख्या पाता है।

कुछ इस तरह:

$ cat /var/log/kern.log | hilight kernel 31 a 34 et 33

हमेशा अपवाद के रूप में काम करेगा।

टाइम कमांड का उपयोग करते हुए मुझे यह वेतन वृद्धि चार बार मिली, जो बहुत अधिक नहीं है।

आप अपनी आवश्यकता के अनुसार किसी भी अन्य पार्सर के साथ sed कमांड को बदल सकते हैं या अपनी आवश्यकताओं के अनुसार फिट कर सकते हैं (awk, आदि ...)


2

एक भी पैटर्न के साथ egrep का उपयोग कर सकते हैं जो गैर-मुद्रण योग्य चरित्र पर हर पंक्ति से मेल खाता है, जैसे:

dmesg | egrep --color "swap|$"

1

क्लेड ठीक काम करता है। मैं ईपीईएल रिपॉजिटरी से आरएचईएल 6.2 पर इसका उपयोग करता हूं


एक बहुत अच्छा उपकरण के लिए +1। दुर्भाग्य से यह सभी सुविधाओं के लिए कहा नहीं है।
l0b0

1

यदि आपका संस्करण grepरंगाई के साथ आता है, तो आप grep को हाइलाइट करने के लिए regexp परिवर्तन का उपयोग कर सकते हैं और हर पंक्ति से मेल भी खा सकते हैं ताकि कुछ भी बाहर न रखा जाए। निम्नलिखित चाल करना चाहिए:

<your command> |grep "highlightme\|^"

0

जैसा कि आपने लिंक में बताया है, grep --color=alwaysकेवल एक पैटर्न के लिए काम करता है। उस ने कहा, मुझे विश्वास नहीं होता कि ऐसा कोई उपकरण मौजूद है।


0

मैं http://em.readthedocs.org/ का उपयोग करता हूं । पायथन की वजह से विभिन्न प्लेटफार्मों पर स्थापित करना आसान है। सरल और ठीक काम करता है।


यूनिक्स और लिनक्स स्टैक एक्सचेंज में आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
स्लम

1
सहायता केंद्र के अनुसार : "हालांकि, आपको अपने उत्तरों में अपनी संबद्धता का खुलासा करना होगा ।" मामले में आप वही इगोर कलन्स्की हैं जिन्होंने लिखा है em, कृपया अपना उत्तर स्पष्ट करें कि आप उपयोगकर्ता नहीं हैं, लेकिन सुझाए गए उपकरण के लेखक हैं।
manatwork
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.