Ich habe 2 Quelldateien, sie sind verschiedene Versionen derselben Sache. Man hat jedoch einen anderen Editor durchlaufen, der Einrückungsänderungen vorgenommen hat, sodass alle Zeilen in diff unterschiedlich angezeigt werden.
Gibt es einen Diff-Befehl oder einen Filter, mit dem ich Diff verwenden kann, sodass die Ausgabe nur Zeilen enthält, die nach dem Ignorieren der führenden Leerzeichen / Tabulatoren unterschiedlich sind?
-w
alle Leerzeichen vor dem Vergleich effektiv aus den Zeilen entfernt werdenab
unda b
daher als identisch gelten. Ich ziehe-b
da es Leerzeichen ignoriert Änderungen , was bedeutet , dassab
unda b
sind unterschiedlich betrachtet abera b
unda
+ mehr Leerzeichen +b
(sorry, Mini-Markdown erlauben würde , nicht mehr Leerzeichen in Code!) Sind die gleich betrachtet.diff
, dass äquivalente Reihenerweiterungen für transzendentale Zahlen wie e und pi ignoriert werden sollen?-w
.-tb
,-tbB
,-t
Usw. alle Leck in einigen Unterschieden , dass Sie es vorziehen , zu ignorieren.-w
nicht, auch wenn dadurch möglicherweise auch einige Unterschiede ausgeschlossen werden, die Sie lieber sehen möchten.Wenn man Tabs falsch verwendet, kann man das beheben
quelle
Bitte beachten Sie, dass bei dieser
-w
Option alle Leerzeichen vor dem Unterschied ignoriert werden, sodass eine Zeile wiethis i s a line
undthis is a line
in jeder Datei alsthisisaline
Unterschiede verglichen wird und keine Unterschiede meldet.Neben dem
-w
Optionsproblem weist auch die-b
Option kleinere Probleme auf, die Leerzeichen nicht ignorieren, wenn sie am Anfang einer Zeile stehenSie sollten also
sed
zuerst die beim Start aufgetretenen Leerzeichen entfernen und dann `diff -bB ausführen.quelle
Mein Open-Source-Linux-Tool 'dif' vergleicht Dateien und ignoriert dabei verschiedene Unterschiede, einschließlich Leerzeichen.
Es gibt viele andere Optionen zum Ignorieren von Kommentaren oder Zeitstempeln, Sortieren der Eingabedateien, Suchen / Ersetzen, Ignorieren bestimmter Zeilen usw.
Nach der Vorverarbeitung der Eingabedateien werden die Linux-Tools meld, gvimdiff, tkdiff oder kompare für diese Zwischendateien ausgeführt.
Eine Installation ist nicht erforderlich. Laden Sie einfach die ausführbare Datei 'dif' von https://github.com/koknat/dif herunter und führen Sie sie aus
Verwenden Sie die Option -white, um Leerzeichen auf ein einzelnes Leerzeichen zu komprimieren:
Verwenden Sie die Option -nowhite, um alle Leerzeichen (außer Zeilenumbrüchen) zu entfernen:
quelle