Sysadmin-Kolumnist Charly wuchtet den Werkzeugkasten Moreutils auf den Tisch: Mit Combine durchforstet er zwei Dateien nach Gleichheiten oder Unterschieden. Vidir dagegen vollführt eine Art “ls” und öffnet die Dateiliste gleich zum Bearbeiten in einem Texteditor.
In der Ausgabe 02/13 schrieb ich über »ifdata«, das auf eine Art über Netzwerke informiert, die für Skripte super ist. Ich hatte das Tool aus dem Moreutils-Paket gezogen, das fast jedes Linux mitbringt und ansonsten unter [1] lagert. Im Paket stecken weitere geschärfte Werkzeuge. Praktisch für Vergleiche ist »combine«: Ich übergebe ihm die Namen von zwei Textdateien und einen Logikoperator (Und, Nicht, Oder, Exklusiv-Oder).
Als Beispiel habe ich zwei Textdateien mit IP-Adressen und -Netzen angelegt. Einige davon sind in beiden Dateien enthalten, andere nicht. Jetzt lasse ich Combine die Files vergleichen, zuerst mit dem Und:
combine iplist-a.text and iplist-b.text
In Abbildung 1 habe ich eingangs den Inhalt der beiden Dateien ausgeben lassen, danach das Combine-Kommando. Als Ausgabe erhalte ich alle Zeilen, die in beiden Dateien vorkommen.
Führe ich das Kommando mit dem Oder-Operator aus, sehe ich alles, was in einer oder beiden Dateien vorkommt. Wichtig: Tritt eine Zeile in beiden Dateien auf, erscheint sie auch zweimal. Das ist oft unerwünscht, lässt sich aber unterdrücken:
combine iplist-a.text or iplist-b.text | sort | uniq
Schon klar: Das Gleiche gelänge auch mit »cat«, aber viele Wege führen nach Rom. Mit Nicht (»not«) als Operator bekomme ich alle Zeilen, die in der ersten, aber nicht in der zweiten Datei vorkommen. Mit dem exklusiven Oder (»xor«) liefert Combine die Zeilen, die sich nur in einer, aber nicht in beiden Dateien finden.
Listige Liste
Ein weiteres Nutztier aus dem Moreutils-Paket heißt Vidir. Oft benutze ich es nicht – aber wenn, dann spart es viel Tipparbeit. (Gepriesen sei, was meiner Faulheit Vorschub leistet.) Vidir erleichtert insbesondere das Umbenennen von Dateien. Normalerweise mache ich das per »mv Datei_1 Datei_2«
Das Perl-Tool »rename« kriegt das bequemer hin und verarbeitet mehrere Dateien zugleich. Aber »vidir« kennt einen besonderen Trick. Führe ich es im aktuellen Verzeichnis aus, öffnet es den Vi (oder was immer »$EDITOR« definiert) und präsentiert eine Liste der im Verzeichnis vorhandenen Dateien. Jetzt editiere ich die Dateinamen, wie ich es will. In Abbildung 2 habe ich die »iplist«-Dateien aus dem Beispiel vorhin umbenannt. Verlasse ich den Editor und führe »ls« aus, finde ich die umbenannten Dateien.
Die Moreutils-Kiste ist damit noch nicht geleert – insgesamt 17 Tools liegen darin. Einige erledigen nur Mini-Jobs (»isutf8« etwa prüft, ob eine Datei aus gültigem UTF-8 besteht), andere sind umfangreicher. Erfolgreiches Heimwerken!
Infos
- Moreutils: https://joeyh.name/code/moreutils/







