जीएनयू स्क्रीन के स्क्रीनलॉग से भागने के पात्रों को हटाना


14

क्या जीएनयू स्क्रीन की आउटपुट फ़ाइल में ईएससी अनुक्रमों को निकालना संभव है? रंग, टैब और अन्य एस्केप कैरेक्टर जैसी चीजें लॉग फाइलों में अपना रास्ता बनाती हैं और उन्हें समझना मुश्किल हो जाता है।

मैंने डॉ। गूगल एंड कंपनी के साथ-साथ मैनुअल पढ़ने की कोशिश की है, लेकिन कुछ भी उपयुक्त नहीं पा सका है ...

शायद मैंने कुछ अनदेखी की है?

जवाबों:


11

इस जादू के टुकड़े की कोशिश करो:

perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/\007//g;print' < screenlog.0

उस के लिए धन्यवाद - यह भयानक है! यह अभी भी वहाँ में ^ जी और ^ एम कैरेक्टर हैं, लेकिन इसकी एक बहुत अधिक पठनीय ...
shaond

1
कि अभिव्यक्ति में जोड़ा गया।
श्वेतार्क

मुझे आश्चर्य है कि उस एक लाइनर में कितने ASCII चेहरे हैं। मैंने लगभग 20 की गिनती बंद कर दी।
जॉन टी।

4
बेशक मैं एक और एक-लाइनर लिख सकता हूं जो उन्हें गिना जाएगा।
व्हाइटवार्क

10

Ansifilter का प्रयोग करें।

ansifilter screenlog.txt > screenlog.txt.clean

क्या हर लिनेक्स प्रणाली में कुछ है या कुछ ऐसा है जिसे स्थापित करने की आवश्यकता है?
जर्नीमैन गीक

@JourneymanGeek यह उबंटू के रिपोस में भी नहीं है, इसलिए मैं कहूँगा कि यह बिल्कुल लोकप्रिय नहीं है। ऐसा लगता है कि आपको इसे प्रोजेक्ट पृष्ठ से स्वयं प्राप्त करना है, और स्वयं को चलाना / संकलित करना है। Willnt
साइमन शीहान

मैं OSX पर हूं brew install ansifilterऔर इसका इस्तेमाल किया जाता है और यह एक आकर्षण की तरह काम करता है।
thekingoftruth

1
मुझे नहीं पता कि वितरण के बारे में 2012 की टिप्पणियों के बाद से यह कैसे बदल गया है, लेकिन मुझे यह फेडोरा की मौजूदा रिलीज (22) के लिए रेपो में मिला।
dmh

10

-R -r या -R ऑप्शन को भी कम ट्राई करें।

less -r screenlog.0

अच्छा समाधान है। यह सभी ^ H (डिलीट) अक्षरों के साथ ठीक से व्यवहार करता है, ^ M cruft के बिना प्रगति बार प्रदर्शित करता है, और यहां तक ​​कि मेरे रंग को भी सुरक्षित रखता है! बेशक, कभी-कभी लॉग प्रदर्शित करना पर्याप्त नहीं होता है।
क्वांटम 7

5

एक बार जब आप अपने सत्र को screenlog.n में कैप्चर कर लेते हैं, तो आप फ़ाइल को टर्मिनल पर कैट कर सकते हैं और फिर स्क्रीन के हार्डकॉपी कमांड का उपयोग करके बिल्ली के आउटपुट को फ़ाइल में डंप कर सकते हैं। परिणाम आपको स्वच्छ आउटपुट प्रदान करेगा जिसमें कोई भी बचना नहीं है।

ऐसा लगता है कि केवल 'गोचा' यह सुनिश्चित करता है कि हार्डकॉपी स्क्रॉलबैक बफर में पूर्व संध्या पर कब्जा कर लेती है और स्क्रॉलबैक बफर में वही होता है जिसे आप कैप्चर करना चाहते हैं।

1. $ screen
2. $ cd /path/to/screenlog.n directory/
3. $ wc -l screenlog.n 
4. $ screen -X scrollback 245 # 245 is the number of lines found from your wc command + 5 
5. $ cat screenlog.n
6. $ screen -X hardcopy -h screenlog.n.cleaned 

ध्यान दें कि -h यह सुनिश्चित करता है कि आप संपूर्ण स्क्रॉलबैक इतिहास को कैप्चर करें और न कि केवल व्हाट्सएप को तत्काल देखें

Screenlog.n.cleaned फ़ाइल में अब कैट आउटपुट की हार्डकॉपी होगी और इसमें कोई भी एस्केप सीक्वेंस शामिल नहीं होंगे


बहुत साफ-सुथरा । अन्य सभी पर्ल / सेड / पायथन वन-लाइनर मेरे लिए विफल रहे। यह सोचकर बहुत निराशा हुई कि कम-आर / अधिक मेरी फ़ाइल को सीधे हैंडल कर रहे थे। एक भी सुझाव wc -lमेरे काम नहीं आया। यह 28226 लौटा, लेकिन वास्तव में मेरे मामले में 33031 की जरूरत थी।
मलोट

4

मैं stringsस्क्रीन लॉग को पठनीय बनाने के लिए कमांड का उपयोग करता हूं । डेबियन के तहत यह बिनुटिल्स पैकेज का हिस्सा है।

जैसा कि इसका मैन पेज कहता है:

स्ट्रिंग्स - किसी ऑब्जेक्ट या अन्य बाइनरी फ़ाइल में प्रिंट करने योग्य स्ट्रिंग्स ढूंढें


2

यदि आप screenउपयोगकर्ता हैं तो जोएल वर्क्स की पोस्ट द्वारा सुझाया गया स्क्रीन हार्डकॉपी समाधान सबसे अच्छा काम करेगा - यह मानते हुए कि आपके पास एक बड़ा स्क्रॉलबैक परिभाषित है :.screenrc

defscrollback 10000

तो आप क्या करेंगे:

  1. अपनी screenlogफ़ाइल प्रदर्शित करें :

    $ cat screenlog.<screen_window_num>
    
  2. hardcopy -hवर्तमान विंडो सामग्री और hardcopy.#फ़ाइल में उसके स्क्रॉलबैक बफर को बचाने के लिए (स्क्रीन मैन पेज देखें) का उपयोग करें :

    <Escape key> (Ctrl-a by default)
    :hardcopy -h
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.