Open-Source-GUI-Diff-Programm mit voreingestelltem Dateityp für Linux

Früher habe ich Examdiff unter Windows verwendet, was großartig ist, da es Unterschiede in Bezug auf den Dateityp zeigt, z. B. beim Vergleich von JSOON oder beim Sortieren von INI-Dateien vor dem Vergleich.

Unter Linux habe ich ein unvergleichliches gefunden, das alles kann, was Examdiff tut, aber nicht so einfach wie Examdiff, außerdem ist es nicht Open Source. Also brauche ich ein GUI- diff Programm, das:

  1. Hat Plugins (Dateityp voreingestellt wie Dateisortierung)
  2. vergleicht Ordner
  3. vorzugsweise Open-Source

UPDATE: Um zu erklären, was ich mit Plugins meine, werde ich zwei Beispiele geben

Zuerst werde ich die folgenden Dateien vergleichen:

  1. 1.json :

    {
      "name": "test app",
      "version": "0.1",
      "release_date": "2_2_2002",
      "kernel": "4.14",
      "username": "root",
      "password": "1234",
    }
    
  2. 2.json

    {"name": "test app","version": "0.1","release_date": "2_2_2002","kernel": "4.14","username": "root","password": "1234",}
    

Sie können sehen, dass diese JSON-Dateien inhaltlich identisch sind, außer dass die erste richtig eingerückt (verschönert) ist, während die zweite verkleinert ist.

Wenn ich also ein Vergleichstool für diese Dateien ausführe, würde ich viele Unterschiede feststellen.

Laufen meld:

laufende Meldung

Wenn ich Examdiff für diese Dateien ausführe, erkennt es, dass es sich um JSON-Dateien handelt, verwendet also ein Plugin und übergibt diese Dateien an ein kleines Dienstprogramm , das diese Dateien vor dem Vergleich verschönert (All dies geschieht natürlich unter der Haube). Also nach dem Vergleich zeigt, dass die Dateien identisch sind

Geben Sie hier die Bildbeschreibung ein

Das zweite Beispiel sind INI-Dateien:

  1. 1.ini

    [info]
    ShortName=EN
    
    [main]
    var1=Yes
    var2=No
    var3=Abort
    var4=Ignore
    var5=OK
    var6=Cancel
    var7=Retry
    var8=All
    var9=Help
    
  2. 2.ini

    [main]
    var1=Yes
    var6=Cancel
    
    
    var5=OK
    
    var9=Help
    
    var2=No
    var3=Abort
    
    var4=Ignore
    var7=Retry
    var8=All
    
    
    
    [info]
    ShortName=EN
    

In INI-Dateien spielt die Reihenfolge der Schlüssel=Wert -Paare keine Rolle, solange sie in denselben Abschnitten stehen, und leere Zeilen spielen auch keine Rolle

Also zeigt das Laufen wieder meldviele Unterschiede:

Geben Sie hier die Bildbeschreibung ein

beim Ausführen von Examdiff zeigt, dass sie identisch sind (diesmal wird ein anderes Plugin verwendet, das auf einem Dienstprogramm namens INIsorter basiert).

Geben Sie hier die Bildbeschreibung ein

Antworten (2)

Nicht wirklich eine Antwort, aber in der Zwischenzeit können einige Filter mit bashProzesssubstitution und verschiedenen Utilities simuliert werden:

  1. Verwenden Sie für .json- Dateien mlrund jq:

    meld  <(mlr --json cat 1.json | jq -M '.' ) \
          <(mlr --json cat 2.json | jq -M '.' )
    
  2. Verwenden Sie für .ini- Dateien Folgendes crudini:

    meld <(crudini --get --format=lines 1.ini|sort) \
         <(crudini --get --format=lines 2.ini|sort)
    

Ein Fehler solcher Methoden besteht darin, dass die Dateinamen ( 1.json usw. ) meldnicht angezeigt werden, sondern die Prozessersatzgerätenummern , aus denen man den entsprechenden Dateinamen ableiten muss .

Ich würde annehmen, dass jqdies allein ausreichen würde ( dh jq -M 1.json ), aber ohne mlrgibt es den Fehler " parse error: Expected another key-value pair at line 8, column 1 " zurück.

Verschmelzen

Ich kenne Examdiff nicht und verstehe daher nicht, was Sie mit "Dateityp voreingestellt wie Dateisortierung" meinen, aber Meld ist ein großartiges Tool zum Vergleichen von Dateien und Ordnern.

  1. Hat keine Addons.
  2. Ordner vergleichen
  3. Ist Open-Source

Bildschirmfoto verschmelzen

Ich kenne meld und es hat nicht die Funktion, die ich am meisten brauche (Plugins). Bitte lesen Sie meine aktualisierte Frage, um zu verstehen, was ich meine