2008-12-09 15 views
14

Ich habe zwei Dateien mit kleinen Unterschieden. Ein normaler diff zeigt mir die Unterschiede zwischen den Dateien. Mit -c oder -u kann ich jedem Stück eine Menge Kontext hinzufügen. Welche Optionen kann ich an diff übergeben, um jede unveränderte Zeile neben den Änderungen zu sehen, und das diff als ein einzelnes, großes Stück zu bekommen?Wie kann ich zwei Dateien mit vollem Kontext vergleichen?

+2

Wenn Sie zufällig eine Grenze für die Größe der Dateien wissen, wie wäre es, nur ein großes Argument an -U zu übergeben? diff -U 9999 ... –

Antwort

20

Verwenden Sie die "-y" Option für die vollständige Seite an Seite Ausgabe

diff -y Datei1 Datei2

Werden Sie Ausgabe etwas geben wie

* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
* Praesent fringilla facilisis pede.       * Praesent fringilla facilisis pede. 
* Nulla sit amet tellus id massa luctus pellentesque.   * Nulla sit amet tellus id massa luctus pellentesque. 
* Pellentesque a neque nec elit aliquam congue.     * Pellentesque a neque nec elit aliquam congue. 
* Quisque rhoncus ultricies elit.        * Quisque rhoncus ultricies elit. 
* Pellentesque laoreet urna id arcu.       * Pellentesque laoreet urna id arcu. 
* Aenean non erat et elit egestas dictum.      * Aenean non erat et elit egestas dictum. 
* Proin ornare sem eget nulla.         * Proin ornare sem eget nulla. 
* Phasellus placerat convallis elit.       * Phasellus placerat convallis elit. 
* Donec ultricies metus non purus.        * Donec ultricies metus non purus. 
* Sed vel enim et nunc accumsan egestas.      * Sed vel enim et nunc accumsan egestas. 
* Cras eget elit in purus luctus ornare.      * Cras eget elit in purus luctus ornare. 
* In pharetra ligula sodales pede.       < 
* Morbi consectetuer mi vitae sem.        * Morbi consectetuer mi vitae sem. 
* Donec sollicitudin pretium erat.        * Donec sollicitudin pretium erat. 
* Cras facilisis nunc sed leo.         * Cras facilisis nunc sed leo. 
* Nunc varius ante sed nisi.         * Nunc varius ante sed nisi. 
                   > THIS SHOULDN'T BE HERE 
                   > THIS SHOULDN'T EITHER! 
* Aenean in quam sagittis est ornare ultricies.     * Aenean in quam sagittis est ornare ultricies. 
* Etiam dignissim scelerisque velit.       * Etiam dignissim scelerisque velit. 
* Mauris porta fringilla sapien.        * Mauris porta fringilla sapien. 
* Proin vitae nisl vitae mauris viverra tempor.     * Proin vitae nisl vitae mauris viverra tempor. 
* Maecenas quis arcu sed lorem mollis bibendum.     * Maecenas quis arcu sed lorem mollis bibendum. 
* Morbi sed turpis non risus molestie posuere.    | * Morbi sed non risus molestie posuere. 
* Curabitur id magna in nulla commodo tristique.    * Curabitur id magna in nulla commodo tristique. 
* Praesent quis nulla vel augue faucibus viverra.    | * Praesent quis nulla BAD vel augue faucibus viverra. 
* Sed interdum libero.          | * Sed lacinia interdum libero. 
                   > ANOTHER ADDITION 
* Donec ultricies posuere arcu.         * Donec ultricies posuere arcu. 
* Etiam interdum auctor mi.          * Etiam interdum auctor mi. 
20

Sie können auch die diff Formatierung außer Kraft setzen Verhalten, um Ihr gewünschtes Verhalten ohne Verwendung des Side-by-Side-Modus zu erhalten:

diff --new-line-format='+%L' --old-line-format='-%L' --unchanged-line-format=' %L' file1 file2 

T seinen Befehl erhalten Sie die vollständige Datei als Kontext zeigen und sein am nächsten Format diff -u file1 file2

+0

Danke für diese Antwort - jede Idee, wie man ein Stück zu diesem hinzufügen? Ich möchte 'diff2html.py' verwenden, das einheitliche Diff akzeptiert; und ich muss manuell sagen: '(echo -e" --- _L.txt \ n +++ _R.txt \ n @@ -1,100 +1,100 @@ "&& diff --new-line-format ... _L.txt _R.txt) | python diff2html.py> LR.html', um die Syntaxfarbe zu erzwingen; Allerdings gebe ich einfach die Hunk-Nummern dort hinzu, bis es anfängt zu arbeiten - und ich würde lieber "diff" ein Stück dafür ausgeben. Ist es möglich? Prost! – sdaau

1

Die Lösung ist eine Kontextgröße (-U Argument), die als die Datei selbst größer ist gesetzt:

diff -U 1000000 file1.txt file2.txt 
Verwandte Themen