Perl vereinfacht UNIX-Administration

Die Vor-Ort-Bearbeitung erlaubt Perl die Veränderung einer Datei direkt an ihrem Speicherort. Die Ausgabe muss nicht erst an ein newfile gesendet werden, wo sie wahrscheinlich sowieso nur wieder in den Originalnamen umbenannt wird. Um diese alt/neu-Ersetzung an einer Datei mit dem Namen myfile auszuführen, verwendet man das folgende Kommando:


perl -i -p -e 's/old/new/g;' myfile

Die Option -i kann optionale Parameter annehmen, die anzeigen, dass Backup-Dateien erstellt werden sollen und welche Endungen diese haben sollen. Außerdem kann man eine ganze Liste von Dateien für die Bearbeitung durch den Befehl -e angeben, anstatt nur eine einzelne Datei als Argument einzugeben. Mit diesen beiden kleinen Tricks lässt sich also ein Befehl konstruieren, der ‚Suchen und Ersetzen‘ auf alle Dateien im Home-Verzeichnis anwendet und Backup-Dateien erstellt:


find ~ -type f |xargs perl -i.bak -p -e 's/old/new/g;'

Wird er auf diese Weise eingesetzt, liefert der Befehl find eine Liste aller Dateien in und unter dem Home-Verzeichnis. Der Befehl xargs nimmt Standard-Eingaben an, in diesem Fall die Liste der Dateien, und fügt sie an den unmittelbar darauffolgenden Befehl an. Wenn man eher wagemutig gestimmt ist, kann man das .bak auslassen und so die Erstellung von Backup-Dateien unterdrücken.

Dieses Kommando mit der Option -e wird auf jede Zeile angewandt – benötigt man jedoch eine feinere Unterteilung auf Wortebene, kann man die Auto-Split-Option -a hinzufügen. Gemeinsam mit -p weist die Option -a Perl an, jede Eingabezeile an den Leerstellen in den Array @F aufzubrechen. Das Ergebnis ist das gleiche, als würde Perls Split-Kommando auf die Zeile angewandt. Diese Option kann für ein leichteres Arbeiten mit in Spalten angeordneten Daten verwendet werden. Ein Script wie:


perl -i -n -a -e 'print @F[2,4];' mychart

sieht zwar etwas kompliziert aus, ist aber leicht zu analysieren, wenn man es Stück für Stück untersucht. Die Option -i bedeutet, dass wir die angegebene Datei, in diesem Fall mychart, direkt bearbeiten werden. Das -n gibt an, dass der Befehl -e auf jede Zeile angewandt wird, aber keine Ausgabe gedruckt werden soll. Das -a ist unsere Auto-Split-Option, und der Befehl -e druckt die miteinander verketteten Inhalte der dritten und fünften Spalte (die Nummerierung beginnt bei Null).

Mit einer letzten Option -F, lässt sich das Verhalten der Auto-Split-Option so steuern, dass die Zeilen an einer beliebigen Grenze, die sich mit einem gewöhnlichen Ausdrucksmittel spezifizieren lässt, in Array-Elemente aufgebrochen werden. Ein Kommando wie dieses:


perl -i -n -a -F, -e'print join ',', @F[1..$#F];' mytable

ließe sich also verwenden, um die erste Spalte einer Tabelle mit durch Komma getrennten Werten (CSV) zu löschen. Das -i steht wieder für die Vor-Ort-Bearbeitung. Die Option -n weist Perl an, jede Zeile zu verarbeiten und nichts zu drucken. Das -a schaltet den Auto-Split ein, und das -F sorgt dafür, dass die Aufspaltung an den Kommata vorgenommen wird. Das angegebene Kommando fügt alle Daten von der ersten bis zur letzten Spalte (ein Bereich, der die Spalte Null ausschließt) wieder mit Kommata zusammen und druckt die Ausgabe.

Wie meistens bei Perl kann die Syntax der Befehle etwas kompliziert werden, die Ergebnisse sind aber großartig. Je mehr man Kommandozeilen-Perl einsetzt, um so leichter wird es. Es wird nicht allzu viel Zeit vergehen, bis man feststellt, dass man die Kommandozeilen-Switches für cut vergessen hat. Eine gute Wahl!

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Bedrohungen in Europa: Schwachstellen in der Lieferkette dominieren

Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…

5 Tagen ago

Bericht: Apple arbeitet an faltbarem iPad

Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…

5 Tagen ago

HPE baut Supercomputer am Leibniz-Rechenzentrum

Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.

6 Tagen ago

Bund meldet Fortschritte in der Netzversorgung

Die Bundesnetzagentur hat ihr Gigabit-Grundbuch aktualisiert. Drei von vier Haushalten sollen jetzt Zugang zu Breitbandanschlüssen…

6 Tagen ago

Vorinstallierte Schadsoftware auf IoT-Geräten

Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…

1 Woche ago

iOS und iPadOS 18.2 beseitigen 21 Sicherheitslücken

Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.

1 Woche ago