Linux: Text Manipulation auf der Kommandozeile
Auf der Kommandozeile kann es von Zeit zu Zeit sehr hilfreich sein, Textmanipulationen vorzunehmen. Dafür können verschiedene Befehle zur Unterstützung verwendet werden. Anhand einer beispielhaften CSV-Datei werden einige Kommandos vorgestellt.. Die Datei beinhaltet die folgenden Daten:
cat beispieldaten.csv
UserId, Datum, ProjektName, Beschreibung, Dauer 1, 2018-11-01, Test Projekt, Das ist ein Test, 180 2, 2018-08-17, Hausbau, Mit Dach, 240 3, 2018-07-25, Wichtiger Kunde, Streng Geheim, 220
cut
Mit dem Befehl “cut” können Texte mit Hilfe der Angabe eines Trennzeichens abgeschnitten werden.
cut -d[delimiter] -f[field number] [filename]
Parameter | Beschreibung |
---|---|
delimiter | Trennzeichen |
field number | Feldnummer |
filename | Dateiname |
Mit dem Parameter “-d” und dem “,” wird das Komma als Trennzeichen festgelegt. Mit dem Parameter “-f3” wird die dritte Spalte für die Ausgabe angegeben.
cut -d, -f3 beispieldaten.csv
Die Ausgabe stellt sich wie folgt dar:
ProjektName Test Projekt Hausbau Wichtiger Kunde
awk
Wenn das Trennzeichen unbekannt ist, kann der Befehl “awk” verwendet werden. Mit “cat” wird die Datei ausgegeben und mit der Pipe (“|”) wird die Ausgabe zum Befehl “awk” umgeleitet. Dabei wird der Parameter “{print $2}” an “awk” übergeben, was dazu führt, dass die zweite Spalte der CSV-Datei ausgegeben wird.
cat beispieldaten.csv | awk '{print $2}'
Die Ausgabe zeigt die zweite Spalte der CSV-Datei an.
Datum, 2018-11-01, 2018-08-17, 2018-07-25,
Der Befehl “awk” ist in Kombination mit anderen Befehlen sehr hilfreich. Z.B. mit dem Kommando “df”:
df | awk '{print $5}'
sed
Mit “sed” können Texttransformationen durchgeführt werden (Ersetzen, Löschen, Ausgeben, Einfügen).
sed ‘s/regex/replacement/flag’ file
Parameter | Beschreibung |
---|---|
s | Der Parameter s steht für substitute und ändert alle Angaben (regulärer Ausdruck) in einen neuen Wert. |
regex | An dieser Stelle kann ein Wort oder ein regulärer Ausdruck gesetzt werden. |
replacement | Hier wird das zu ersetzende Zeichen oder Wort angegeben. |
flag | Mit dem Flag kann die Gültigkeit des Befehls eingeschränkt werden. Mit dem Buchstaben “g” (global) wird der Befehl auf den gesamten Inhalt angewendet. |
cat beispieldaten.csv | sed 's/18/19/g'
Bei der Ausgabe wurden alle Zahlen “18” durch die Zahl “19” ersetzt.
UserId, Datum, ProjektName, Beschreibung, Dauer 1, 2019-11-01, Test Projekt, Das ist ein Test, 190 2, 2019-08-17, Hausbau, Mit Dach, 240 3, 2019-07-25, Wichtiger Kunde, Streng Geheim, 220