डिफ रिपोर्ट में अंतर है लेकिन दोनों लाइनें समान हैं


55

मैंने 2 फाइलों में अंतर-एड किया और मिला

1c1
< 1
---
> 1

दोनों फाइलों में सिर्फ "1" था। यह कैसे अलग है?


कृपया दोनों फाइलों की सामग्री पोस्ट करें;)
रिनविंड

5
यदि आप अंतर का उपयोग कर रहे हैं, तो -uविकल्प अधिक मानव-पठनीय हो सकता है।
लीकेन्स्टाइन

@ रिनविंड, दोनों फाइलों में सिर्फ 1 पाठ है, लेकिन अगर आप अधिक देखना चाहते हैं pastebin.com/byiqdie1
Jiew Meng

माफ़ करना। ऐसा नहीं है जब मैं ऐसा करता हूं। कुछ अलग होना चाहिए। एक cp 1 2ऐसा करें (इसलिए 2 को अधिलेखित करें) और फिर आप 100% b हो सकते हैं सुनिश्चित करें कि वे समान हैं;)
Rinzwind

2
vimdiff file1 file2? : D
dylnmc

जवाबों:


68

पहली पंक्ति: aजोड़ा गया, dहटाए गए और cबदले गए के लिए खड़ा है । इन अक्षरों से पहले मूल फ़ाइल की लाइन नंबर दिखाई देते हैं और संशोधित फ़ाइल के अक्षर के बाद दिखाई देते हैं।

दूसरी पंक्ति: पंक्ति <1 फ़ाइल से होती है और फ़ाइल 2 से भिन्न होती है।

तीसरी पंक्ति एक विभक्त है।

4 वीं पंक्ति: पंक्ति >2 फ़ाइल से हैं और फ़ाइल 1 से अलग हैं।

(यदि आप कभी देखते हैं =तो इसका मतलब है कि लाइनें दोनों फाइलों में समान हैं)

और आपकी समस्या व्हाट्सएप या अन्य गैर-मानवीय पठनीय वर्ण हो सकती है: जो एक अंतर को भी ट्रिगर करते हैं।

आउटपुट में हेरफेर करने के लिए कुछ विकल्प हैं।

उदाहरण:

rinzwind @ discworld: ~ $ अधिक 1 
परीक्षा
test2
test3
rinzwind @ discworld: ~ $ अधिक 2
परीक्षा
test2  
test3

संदर्भ स्वरूप:

rinzwind @ discworld: ~ $ diff -c 1 2
*** # 2011-08-13 17: 05: 40.433966684 +0200
--- 2 2011-08-13 17: 11: 24.369966629 +0200
***************
*** 1,3 ****
  परीक्षा
! test2
  test3
--- 1,3 ----
  परीक्षा
! test2  
  test3

ए "!" दो फ़ाइलों में मेल खाने वाली लाइनों के बीच बदलाव का प्रतिनिधित्व करता है। एक "+" एक रेखा के अतिरिक्त का प्रतिनिधित्व करता है, जबकि एक रिक्त स्थान एक अपरिवर्तित रेखा का प्रतिनिधित्व करता है। पैच की शुरुआत में फ़ाइल जानकारी है, जिसमें पूर्ण पथ और एक टाइम स्टैम्प शामिल है। प्रत्येक हंक की शुरुआत में लाइन नंबर होते हैं जो फाइलों में संबंधित परिवर्तन के लिए आवेदन करते हैं। तीन तारांकन के सेटों के बीच दिखने वाली एक संख्या सीमा मूल फ़ाइल पर लागू होती है, जबकि तीन डैश के सेट नई फ़ाइल पर लागू होते हैं। हंक पर्वतमाला संबंधित फ़ाइल में आरंभिक और अंतिम पंक्ति संख्याएँ निर्दिष्ट करती हैं।

एकीकृत प्रारूप के बारे में लेकेनस्टाइन की टिप्पणी पर विस्तार:

rinzwind @ discworld: ~ $ diff -u 1 2
---> 2011-08-13 17: 05: 40.433966684 +0200
+++ 2 2011-08-13 17: 11: 24.369966629 +0200
@@ -1,3 +1,3 @@
 परीक्षा
-test2
+ test2  
 test3

प्रारूप संदर्भ प्रारूप के रूप में एक ही दो-पंक्ति हेडर के साथ शुरू होता है, सिवाय इसके कि मूल फ़ाइल "---" से पहले है और नई फ़ाइल "+++" से पहले है। इसके बाद एक या एक से अधिक परिवर्तन हॉक होते हैं जिनमें फ़ाइल में लाइन अंतर होता है। अपरिवर्तित, संदर्भ रेखाएं एक अंतरिक्ष वर्ण से पहले होती हैं, इसके अलावा रेखाएं एक प्लस चिह्न द्वारा पूर्ववर्ती होती हैं, और विलोपन रेखाएं माइनस साइन से पहले होती हैं।

कुछ उपयोगी विकल्प:

-b सफेद स्थान की मात्रा में परिवर्तन को अनदेखा करें।

-w सभी सफेद स्थान पर ध्यान न दें।

-B सभी रिक्त लाइनों को अनदेखा करें।

-y 2 कॉलम्स में आउटपुट।


यदि कोई छिपा हुआ पात्र है तो मैं कैसे जांच करूं? वहाँ वैसे भी छिपे हुए पात्रों को अनदेखा करने के लिए है (हो सकता है कि सिर्फ newlines और टैब को छोड़कर?) मुझे लगता है कि अधिकांश छिपे हुए अक्षर आकस्मिक हैं?
जीवी मेंग

मैंने कुछ उपयोगी विकल्पों में डाल दिया (कॉपी किया हुआ man diff;))
रिनविंड

मैं -b फ्लैग कार्यों का उपयोग करते हुए नोटिस करता हूं। हम्म मैं
गेदिट में व्हॉट्सएप

@JiewMeng od -x1zदोनों फ़ाइलों पर चलाएँ और odआउटपुट की तुलना करें । यह फ़ाइलों के बीच किसी भी छिपे हुए मतभेदों का पता लगाना चाहिए।
लार्जो

6

मुझे लगता है कि जब ओ / नॉन-प्रिंट करने योग्य वर्णों (विशेष रूप से फाइलें जो निर्णय लेती हैं, "बाइनरी" हैं और इस प्रकार आपको केवल यही बताती हैं कि वे भिन्न होते हैं) की तुलना में ओड (ऑक्टल डंप) काम में आता है।

नीचे दिए गए उदाहरण में, मैं उन फ़ाइलों की एक जोड़ी बनाता हूं जो मूल लोगों की तरह हो सकती हैं, फिर मूल आउटपुट के साथ एक अंतर करते हैं; अगले मैं अलग "od" आउटपुट के एक जोड़े पर अलग हूँ।

$ गूंज 1> 1
$ प्रतिध्वनि "1"> 2
$ भिन्न 1 2

1c1  
< 1  
- ---  
> 1   

$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od

1,2c1,2
< 0000000   1  \n
< 0000002
---
> 0000000   1      \n
> 0000003

$ od -Ax -c -t X1 1> 1.od
$ od -Ax -t-X1 X1 2> 2.od
$ diff 1.od 2.L

1,3c1,3
< 000000   1  \n
<         31  0a
< 000002
---
> 000000   1      \n
>         31  20  0a
> 000003

1

मेरे पास एक ही समस्या थी और मुझे एक समाधान मिला जो मदद कर सकता है, कमांड का उपयोग करें:

dos2unix <file1> <file2>

उनमें से एक डॉस / विंडोज़ प्रारूप में हो सकता है और दूसरा एक यूनिक्स प्रारूप

के बाद मैं यह किया था सब अच्छा था!



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