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