यूनिक्स अलग-अलग परिणाम हैं?


106

मैं एक यूनिक्स के परिणाम को दूसरे के बाद एक अंतर के बजाय कमांड-टू-साइड कैसे कर सकता हूं? एक उदाहरण के लिए नीचे देखें:

    diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf
< asdfsad
< fsaf
< fdsadf
---
> asdfsafdsf
> saf
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa
< fd
---
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa

मैं कुछ ऐसा करना चाहूंगा:

diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf       > asdfsafdsf
< asdfsad        > saf       
< fsaf
< fdsadf
---
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa               > sadf
< fd              > sadf
---               > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > safa

vimdiff भी मदद कर सकता है। सौभाग्य।
शेल्टर

जवाबों:


168

से man diff, आप -yसाथ-साथ करने के लिए उपयोग कर सकते हैं ।

-y, --side-by-side
       output in two columns

इसलिए, कहते हैं:

diff -y /tmp/test1  /tmp/test2

परीक्षा

$ cat a                $ cat b
hello                  hello
my name                my name
is me                  is you

आइए उनकी तुलना करें:

$ diff -y a b
hello                                                           hello
my name                                                         my name
is me                                                         | is you

39
ध्यान दें कि diffएक हार्ड-कोडित अधिकतम आउटपुट चौड़ाई (130 कॉलम) है। --width=$COLUMNSइसे अपने टर्मिनल चौड़ाई पर सेट करने के लिए अलग विकल्प जोड़ें ।
ntc2

6
इसके अलावा बड़े के लिए एक अच्छा scrolly / खोज योग्य अंतर के लिए बस इस तरह कम में पाइप अलग:diff -y /tmp/test1 /tmp/test2 | less
willbradley


5
बेहतरdiff --width=$COLUMNS --suppress-common-lines --side-by-side a b
rubo77

@ rubo77 इस बात पर निर्भर करता है कि आपने टैब का विस्तार कैसे किया है, आप टैब को रिक्त स्थान तक विस्तारित करना चाह सकते हैं ताकि आउटपुट कॉलम में ठीक से ऊपर आ सके:diff --expand-tabs --width=$COLUMNS --suppress-common-lines --side-by-side a b
EdwardTeach

40

Icdiff के होमपेज से :

यहां छवि विवरण दर्ज करें

आपका टर्मिनल रंग प्रदर्शित कर सकता है, लेकिन अधिकांश भिन्न उपकरण इसका अच्छा उपयोग नहीं करते हैं। परिवर्तनों को हाइलाइट करके, icdiff आपको रास्ते में मिले बिना समान फ़ाइलों के बीच अंतर दिखा सकता है। यह मौजूदा लाइनों के भीतर छोटे बदलावों की पहचान करने और समझने के लिए विशेष रूप से सहायक है।

सभी परिस्थितियों के लिए एक अलग प्रतिस्थापन होने की कोशिश करने के बजाय, icdiff का लक्ष्य एक ऐसा उपकरण होना है, जिस पर पहुंचने के लिए आप एक बेहतर तस्वीर प्राप्त कर सकते हैं, जब यह तुरंत अलग से स्पष्ट नहीं होता है।

IMHO, इसका उत्पादन की तुलना में बहुत अधिक पठनीय है diff -y


29
diff -y --suppress-common-lines file1 file2

3
यह स्वीकृत उत्तर होना चाहिए क्योंकि बस -yसामान्य रेखाएँ दिखाता है जो कि केवल diffऔर मूल प्रश्न के समान नहीं है । +1।
हेलिक्स

बेहतरdiff -W $COLUMNS --suppress-common-lines -y file1 file2
rubo77

13

आप उपयोग कर सकते हैं:

sdiff  file1 file2

या

diff -y file1 file2

या

vimdiff file1 file2

अगल-बगल प्रदर्शन के लिए।


2
मैं सोच रहा था क्या के बीच का अंतर है diff -yऔर sdiff? उनका आउटपुट मेरे जैसा ही दिखता है।
हक्स

11

आपके पास sdiffफ़ाइल अंतर के साइड-बाय-साइड मर्ज के लिए होना चाहिए । man sdiffपूरी कहानी के लिए पढ़ें ।


2
मेरे सिस्टम पर (GNU / Linx) के sdiffरूप में एक ही काम करने के लिए प्रकट होता है diff -yऔर sdiffजानकारी के दस्तावेज़ यह कहते हैं कि यह पदावनत है: "'sdiff' बिना '--output' ('-o') साइड-बाय-साइड अंतर पैदा करता है। यह उपयोग अप्रचलित है, इसके बजाय 'diff' के विकल्प का प्रयोग करें - '' by-by-side '(' -y ')।
ntc2

7

आप बस का उपयोग कर सकते हैं:

diff -y fileA.txt fileB.txt | colordiff

यह आउटपुट को दो कॉलम्स और रंगीन में विभाजित दिखाता है! ( colordiff)


1
बस इसे OSX पर आज़माया गया है और यह यहाँ काम नहीं करता है। शायद इसके लिए केवल linux है।
निकोला पेटकांस्की

Colordiff osx पर नहीं है।
टेरी फ्रेंगुइडाकिस

आप स्थापित कर सकते हैं colordiff पर OSX का उपयोग कर Homebrew brew install colordiff देखें colordiff सूत्र
जॉर्ज फर्नांडो Matricali


6

सीडीएफ की कोशिश करें - रंगीन देखें, वृद्धिशील कार्यक्षेत्र में अलग-अलग हैं या स्टड से कंधे से कंधा मिलाकर और ऑटो पेजर समर्थन से।



4

यदि आपकी फ़ाइलों में रिक्त स्थान और टैब का असंगत उपयोग है, तो आपको टैब -tका विस्तार करने के लिए तर्क को शामिल करना उपयोगी हो सकता है :

diff -ty file1 file2

1

रंग, कमान के साथ-साथ और उर्फ ​​के साथ बढ़ाया अलग कमान

मान लें कि फ़ाइल सामग्री इस प्रकार है:

cat /tmp/test1.txt
1
2
3
4
5
8
9

तथा

cat /tmp/test2.txt
1
1.5
2
4
5
6
7

अब अगल-बगल तुलना कर रहे हैं

diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7

आप उपयोग करने के लिए अन्य को परिभाषित कर सकते हैं

alias diff='diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always'

फिर नया अंतर परिणाम:

diff /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.