Besser cutten mit cuts

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Eine Alternative zum klassischen Unix-Tool "cut". 

Das klassische Unix- und Linux-Tool "cut" ist dafür gedacht, aus zeilenweisen Informationen einzelne Felder zu extrahieren. Ein Beispiel dafür ist die Paketliste auf Debian- und Ubuntu-Systemen, die etwa so aussieht:

ii  adduser          3.113+nmu3                all         add and remove users and groups
ii  apache2          2.2.22-13+deb7u6          i386        Apache HTTP Server metapackage

Dabei sind die einzelnen Felder durch eine unterschiedlich große Anzahl an Leerzeichen getrennt, was es schwierig macht, sie mit "cut" zu verarbeiten, denn das Tool kann nur einzelne Zeichen als Feldtrenner verwenden, etwa mit der Option "-d ' '" das Leerzeichen. Das Problem lässt sich mit dem Utility "tr" lösen, das mit der Option "-s" (--squeeze-repeats) mehrfach vorkommende Leerzeichen auf ein einziges reduziert.

Eine Alternative zu dieser Methode eröffnet das Perl-Skript "cuts" , das die gleichen Funktionen wie "cut" bietet, aber mit wesentlich mehr Komfort. So erspart es etwa die obigen Bearbeitung der Leerzeichen mit "tr". Generell ist es nicht nötig, den Feldtrenner überhaupt anzugeben, denn "cuts" versucht selber, das dafür verwendete Zeichen herauszufinden. Selbst Listen, in denen sich das Trennzeichen von Zeile zu Zeile unterscheidet, kann es verarbeiten. Im Gegensatz zu "cut" beginnt "cuts" bei der Zählung der Felder mit 0. Der folgende Aufruf extrahiert den Paketnamen aus der obigen Liste:

dpkg -l | cuts 1

Praktisch ist auch die Möglichkeit, mit dem Zählen von hinten zu beginnen. Wer beispielsweise das letzte Feld in Zeilen mit vielen Elementen verwenden möchte, kann dies mit "cuts -1" erreichen, ohne alle Felder abzuzählen. Ein weiteres interessantes Feature ist die Möglichkeit, eine Regular Expression zur Angabe des Feldtrenners zu verwenden. Auch die Funktionalität des cut-Pendants "paste" ist in "cuts" bereits integriert. 

Zur Installation genügt es, aus dem Github-Repository die Datei "cuts" herunterzuladen, mit "chmod +x" ausführbar zu machen und in einem Verzeichnis zu speichern, das im der Umgebungsvariable PATH enthalten ist. 

12.01.2016

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023