2009-06-11 5 views
2

Bei Verwendung von Diff, wie würde man Zeilenunterschiede ignorieren, die sich nur auf GUIDs unterscheiden? Etwas entlang der Linien von:Diff Ignorieren von GUIDs

diff -I "^.*[a-zA-Z0-9]{8}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{5}\-[a-zA-Z0-9]{5}\-[a-zA-Z0-9]{12}.*$" 

Wo offensichtlich die oben nicht funktioniert, sondern nur eine Vorstellung davon zu bekommen, was benötigt wird.

Antwort

0

Vielleicht könnten Sie zuerst die Eingabedateien über sed verschicken, um alles zu entfernen, das mit einer GUID übereinstimmt, und dann das Diff ausführen.

+0

Dies führt zu Problemen bei der Erstellung eines vereinheitlichten Diffs, da die GUID-lose Zeile möglicherweise immer noch im diff erscheint, was zu Konflikten bei der späteren Anwendung des diff führt. Wenn es Zeilen gibt, die nicht (nur) auf der GUID differieren, aber andere Inhalte, führt diese Methode zu Problemen, egal welche Art von Diff Sie machen. – balpha

+1

Ich bin mir nicht sicher, ob Sie meine spezifische Antwort oder die ursprüngliche Frage im Allgemeinen kommentieren, da jede Lösung Probleme beim Anwenden eines Patches haben würde, der aus einem solchen Diff generiert wurde. Außerdem gab die ursprüngliche Frage nicht an, dass es notwendig war, einen Patch zu generieren, der später angewendet werden kann (es gibt viele andere Gründe, warum man den Unterschied zwischen zwei Dateien finden möchte). –

0

Können Sie die Ausgabe von diff zu einer grep -v pipe und verwenden Sie Ihr Muster?

3
diff -I '[0-9A-F\-]\{36\}' foo.txt bar.txt