क्या एक कंडेंस्ड साइड-बाय-साइड डिफरेंट फॉर्मेट है?


40

मेरे पास हजारों लाइनों वाली दो लॉग फाइलें हैं। पूर्व-प्रसंस्करण के बाद, केवल कुछ लाइनें भिन्न होती हैं। ये शेष लाइनें या तो वास्तविक अंतर हैं, या लाइनों के फेरबदल समूह हैं।

एकीकृत अंतर मुझे विस्तृत अंतर देखने की अनुमति देता है, लेकिन यह नेत्रगोलक के साथ मैनुअल तुलना को कठिन बनाता है। साइड-बाय-साइड अंतर तुलना के लिए अधिक उपयोगी लगता है, लेकिन यह हजारों अपरिवर्तित लाइनों को भी जोड़ता है। क्या दोनों दुनियाओं का फायदा पाने का कोई तरीका है?

ध्यान दें, ये लॉग फाइलें उत्पन्न होती हैं, xscopeजो एक प्रोग्राम है जो Xorg प्रोटोकॉल डेटा पर नज़र रखता है। मैं सामान्य-प्रयोजन के साधनों की तलाश कर रहा हूं जो ऊपर दिए गए स्थितियों के लिए लागू हो सकते हैं, उदाहरण के लिए विशेष वेबसर्वर एक्सेस लॉग विश्लेषण उपकरण नहीं।


दो उदाहरण लॉग फाइलें http://lekensteyn.nl/files/qemu-sdl-debug/ ( log13और log14) पर उपलब्ध हैं । एक प्री-प्रोसेसर कमांड xscope-filterफ़ाइल में पाया जा सकता है जो टाइमस्टैम्प और अन्य छोटे विवरणों को हटा देता है।


2
क्या आपके diffपास --suppress-common-linesविकल्प है? pastebin.com/KZrVCNFR
मैनटवर्क

1
@manatwork अच्छा है, यह करता है। अधिक संदर्भ जोड़ने का कोई तरीका (जैसे लाइन नंबर)?
लेकेनस्टाइन

5
तब हो सकता है vimdiff( विम पैकेज से) आपकी आवश्यकताओं को बेहतर ढंग से पूरा करेगा: समानांतर प्रदर्शन, रंगीन, सामान्य पंक्तियाँ। लाइन नंबर के साथ चालू किया जा सकता है :set number
मैनटवर्क

मुझे लगता है कि आपको एक जवाब के रूप में vimdiff लगाना चाहिए :)
Kotte

1
सीएलआई उपकरण पसंद किए जाते हैं, लेकिन जीयूआई उपकरण को अनुमति दी जाती है यदि वे पर्याप्त छोटे हैं। मैंने kdiff3 की कोशिश की है, लेकिन यह अभी भी बहुत विस्तार में है। आदर्श रूप में, मुझे सभी अनावश्यक विवरण नहीं दिखते। मैं दो डेटा सेट संलग्न करूंगा।
लेकेनस्टाइन

जवाबों:


37

2 diff उपकरण मैं सबसे अधिक उपयोग किया जाएगा मिलकर एक हो जाना और sdiff

मिलकर एक हो जाना

Meld एक GUI है, लेकिन फाइलों के बीच अंतर दिखाने में बहुत अच्छा काम करता है। यह सॉफ्टवेयर डेवलपमेंट के लिए और अधिक सक्षम है जैसे कि बदलाव को एक तरफ से दूसरे में बदलने के लिए बदलाव को मर्ज करने की क्षमता लेकिन इसे सीधे साइड-बाय-साइड डिफरिंग टूल के रूप में उपयोग किया जा सकता है।

    पिघल के ss

    मेल कोड हाइलाइटिंग के ss

sdiff

मैंने वर्षों से इस उपकरण का उपयोग किया है। मैं आम तौर पर इसे निम्नलिखित स्विचों के साथ चलाता हूं:

$ sdiff -bBWs file1 file2
  • -b सफेद स्थान की मात्रा में परिवर्तन को अनदेखा करें।
  • -W सभी सफेद स्थान पर ध्यान न दें।
  • -B उन परिवर्तनों को अनदेखा करें जिनकी रेखाएँ सभी रिक्त हैं।
  • -s आम लाइनों का उत्पादन न करें।

अक्सर लॉग फ़ाइलों के साथ आपको कॉलम की चौड़ाई को व्यापक बनाने की आवश्यकता होगी, आप -w <num>स्क्रीन को व्यापक बनाने के लिए उपयोग कर सकते हैं ।

अन्य उपकरण जो मैं बंद और चालू उपयोग करता हूं

diffc

डिफेक एक पाइथन लिपि है जो एकीकृत रूप से अलग आउटपुट को रंगती है।

$ diffc [OPTION] FILE1 FILE2

             diffc के एस.एस.

vimdiff

Vimdiff शायद उतना ही अच्छा है, अगर यह मेल्ड से बेहतर नहीं है और इसे टर्मिनल से चलाया जा सकता है। मैं हमेशा इसका उपयोग करना भूल जाता हूं, हालांकि, मेरे लिए, एक अच्छा संकेतक है कि मैं दिन-प्रतिदिन उपयोग करने के लिए उपकरण को थोड़ा मुश्किल से ढूंढता हूं। लेकिन YMMV।

                                    vimdiff के ss


1
मेल्ड की एक बड़ी विशेषता, दुर्भाग्य से आपके स्क्रीनशॉट पर दिखाई नहीं देती है, स्रोत कोड फ़ाइलों का सिंटैक्स हाइलाइटिंग है।
मैनटवर्क

हाँ। मैं हर समय vimdiff का उपयोग करता था, जब से मैं meld का उपयोग करने के लिए स्थानांतरित हुआ हूं, मुझे इसका उपयोग करना आसान लगता है और यह देखना आसान है कि यह मुझे बनाम vimdiff क्या बता रहा है।
स्लम

@manatwork - जवाब के लिए अपना लिंक जोड़ा, प्रतिक्रिया के लिए धन्यवाद!
स्लम

1
स्रोत कोड के लिए बहुत अच्छा लगता है, लेकिन लॉग फ़ाइलों की तुलना करने के लिए इतना नहीं है। मैं अक्सर स्रोत फ़ाइल के लिए colordiff.orgcolordiff से उपयोग करता हूं । मेरी समझ के लिए, के समान है उत्पादन में कोई मतभेद नहीं है, लेकिन थोड़ा अलग विकल्पों के साथ। सादे के लिए कुछ अच्छे विकल्प दिखाने के लिए +1। sdiffdiff -y
लेकेनस्टेन

मैंने कभी भी कोर्डिफ़ का इस्तेमाल नहीं किया है, मुझे इसकी जाँच करनी होगी। आप पर सही कर रहे हैं diff -ydiffलगता है कि स्विच का जोड़ किसी बिंदु पर हुआ है, या मैंने कभी इस पर ध्यान नहीं दिया। इसके अतिरिक्त यहाँ gnu diff टूल टूल पेज का लिंक दिया गया है । उपकरणों के इस सूट का उपयोग करने के लिए अच्छा सामान।
स्लम

20

वर्तमान में मैं अलग-अलग लाइनों को फ़िल्टर करने वाले grep के साथ-साथ अलग-अलग उपयोग कर रहा हूँ:

diff -y -W250 log.txt log2.txt | expand | \
    grep -E -C3 '^.{123} [|<>]( |$)' | colordiff | less -rS
  • विकल्प -W250आउटपुट को व्यापक बनाता है ताकि मैं अधिक डेटा देख सकूं।
  • expand टैब को रिक्त स्थान में बदलना आवश्यक है
  • -C3 grep आउटपुट के संदर्भ में 3 लाइनें जोड़ता है।
  • ^.{123} अगल-बगल के मार्करों से पहले आधे डेटा से मेल खाता है।
  • colordiff उत्पादन का पालन करने के लिए सुंदर बनाता है
  • less -rSANSI रंगों की व्याख्या की जा सकती है ( -r) और लिपटी हुई रेखाओं ( -S) को रोकता है ।

यह एक हैक है, विकल्प का स्वागत है।


1
यह अद्भुत है।
पैट मायरोन

अछा सुझाव। दुर्भाग्य से grepरेगेक्स बहुत धीमा है। टैब का विस्तार करने का विकल्प भी diffहै -t
टिम्मम

12

किसी ने अभी तक icdiff का उल्लेख नहीं किया है? यह बहुत अच्छा है! Pic खुद के लिए बोलता है: icdiff


यह एक बहुत साफ उपकरण है, और भी उपलब्ध है।
उज़ुमाकी डी। इचिगो

हालांकि बड़ी फ़ाइलों के लिए बहुत धीमी है।
टिममम

0

सभी पंक्तियों सहित डिफ़ॉल्ट रूप से लाइनक्स "sdiff" कमांड साइड-बाय-साइड अंतर दिखाता है, लेकिन आप केवल अंतर दिखाने के लिए विभिन्न विकल्पों का उपयोग कर सकते हैं:

sdiff -tWBs -w $COLUMNS config.xml config.xml.original

कहा पे

-t: टैब का अनुवाद रिक्त स्थान पर करें

-W: व्हॉट्सएप मतभेदों को नजरअंदाज करें

-बी: खाली लाइनों को नजरअंदाज करें

-s: लाइनों को अनदेखा करें जो समान हैं

-W $ COLUMNS: स्क्रीन की पूरी चौड़ाई का उपयोग करें

दिखाए गए लाइनों को विभाजित किया जाएगा |, <, या> - प्रलेखन देखें, या बस इसे आज़माएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.