Zum Hauptinhalt springen
simil - Der bessere 'comm' Befehl
  1. Projekte/

simil - Der bessere 'comm' Befehl

·2 min

GitHub: https://github.com/Criomby/simil

Der Vergleich von Textdateien kann mühsam sein.
Man möchte ähnliche Zeilen identifizieren – nicht nur identische. Der Standardbefehl comm auf Linux/Unix-Systemen ermöglicht zwar einen einfachen Zeilenvergleich, ist aber für die Nuancen des Codes oft zu simpel und unflexibel.

Was ist „simil“?
#

simil ist ein Kommandozeilentool, das genau für diese Aufgabe entwickelt wurde: den Vergleich zweier Codedateien und die Hervorhebung von Ähnlichkeiten. Der Fokus liegt dabei auf Genauigkeit und Konfigurierbarkeit. Es ist auf die Komplexität von Code ausgelegt und ermöglicht es, Leerzeichen, Zeilenpräfixe und andere stilistische Unterschiede zu ignorieren, die einen einfachen Vergleich sonst verfälschen würden.

Wie unterscheidet es sich von „comm“?
#

Der Standardbefehl „comm“ ist ein leistungsstarkes Tool zum Auffinden gemeinsamer Zeilen zwischen Dateien. Er arbeitet jedoch rein textuell. Hier sind die wichtigsten Unterschiede:

  • comm: Identifiziert Zeilen, die in beiden Dateien vorkommen. Es eignet sich hervorragend für die einfache Dateisynchronisierung oder das Auffinden gemeinsamer Abschnitte, berücksichtigt jedoch Codestil und -formatierung nicht.
  • simil: Bietet einen deutlich intelligenteren Ansatz. Es ist so konfiguriert, dass es die Codesemantik bis zu einem gewissen Grad erkennt. Man kann festlegen, dass Leerzeichen, bestimmte Präfixe und vieles mehr ignoriert werden, was zu deutlich präziseren Vergleichen führt.

Warum simil besser für Codevergleiche ist
#

Hier zeigt sich die wahre Stärke von simil:

  • Konfigurierbares Matching: Das ist der größte Vorteil. Man kann die Dateianalyse von simil anpassen. Leerzeichen ignorieren? Einfach angeben. Müssen bestimmte Schlüsselwörter oder Präfixe (wie else oder import) ignoriert werden? Diese können in einer Konfigurationsdatei definiert werden.
  • Konfigurationsoptionen: simil verwendet die Konfigurationsdatei simil.toml, um Vergleichsregeln zu definieren.
  • Leerzeichenbehandlung: --trim entfernt führende/nachgestellte Leerzeichen, was für präzise Vergleiche entscheidend ist.
  • Muster ignorieren: Man kann bestimmte Zeilen/Muster definieren, die vollständig ignoriert werden sollen.
  • Detaillierte Ausgabe: Im Gegensatz zu „comm“ liefert simil wertvolle Informationen darüber, wo sich die Übereinstimmungen in den Dateien befinden, einschließlich der Zeilennummern. Dies war für mich ein großes Problem mit dem Befehl „comm“ bei der Arbeit mit großen Codedateien.
  • Flexibilität: Es kann jede Art von Textdatei vergleichen, nicht nur Code.