Es gibt viele Situationen, in denen du große Dateien schnell analysieren, ändern und verarbeiten musst – sowohl viele Dateien als auch sehr große. Oft handelt es sich dabei um textbasierte CSV-Dateien (Comma Separated Values). Öffnest du sie mit Standard-Tabellenkalkulationen wie Excel, LibreOffice oder OpenOffice, sprengen sie schnell den Arbeitsspeicher deines Rechners. Auch die Stapelverarbeitung einer großen Anzahl von Dateien bricht nach ein paar Stunden oft wegen eines unerwarteten Dateifehlers ab.
Du verbringst dann zwangsläufig viel Zeit mit eingefrorenen Bildschirmen, Neustarts und Warterei.
Viele dieser Aufgaben lassen sich jedoch mit wenigen Zeilen Code erledigen. Noch besser: Wenn du ein paar einfache Shell-Befehle beherrschst, sparst du enorm Zeit und Nerven.
In diesem Beitrag bekommst du einen Überblick über Shell-Befehle, die ich fast täglich nutze. Ich hoffe, sie sind auch für dich hilfreich.
Kurznotizen
Beachte, dass es verschiedene Shell-Typen gibt (bash, zsh, ...). Bash ist am weitesten verbreitet, weil es die Standardshell auf macOS und den meisten Linux-Distributionen ist. Zsh (und Oh My Zsh) ist eine beliebte und leistungsstarke Alternative. Die in diesem Blogpost gezeigten Shell-Befehle wurden unter bash auf OS X (macOS) getestet und sollten auch in anderen Shells und Umgebungen funktionieren.
Alle folgenden Beispiele basieren auf dem Adult-Datensatz aus dem UCI Machine Learning Repository, auch als „Census Income“-Datensatz bekannt und hier verfügbar. Er wird häufig genutzt, um anhand von Zensusdaten vorherzusagen, ob das Einkommen \$50K/Jahr übersteigt. Mit 48.842 Zeilen und 14 Attributen ist er keineswegs groß, aber ideal, um die Beispiele zu illustrieren. Obwohl die Daten die Erweiterung .data tragen, handelt es sich um eine sauber formatierte CSV-Datei. Lade dir den Datensatz gern herunter und mach mit!
Zählen mit wc
Du hast eine neue Textdatei und willst wissen, wie viele Zeilen sie enthält. Das erledigt der Word-Count-Befehl wc -l:
Das zeigt dir, dass die Datei adult.data 32.562 Zeilen enthält. Das Flag -l weist wc an, die Zeilen zu zählen. Mit dem Flag -w kannst du stattdessen die Wörter zählen.
Die Datei adult.data enthält knapp 500.000 Wörter.
Mit wc kannst du auch die Anzahl von Dateien in einem Verzeichnis ermitteln, indem du die Ausgabe eines einfachen ls -l als Eingabe an wc übergibst. Die Weitergabe der Ausgabe eines Befehls an einen anderen mit dem Pipe-Symbol | ist ein nützliches Shell-Muster namens Pipelining. Du wirst es in mehreren Beispielen in diesem Beitrag sehen.
Angenommen, du hast nun einen Ordner mit vielen Dateien. Der folgende Befehl sagt dir genau, wie viele Dateien er enthält:
Mit Wildcards und Unterordnern gibt es noch viele weitere Anwendungsfälle für wc.
Zurück zu deiner Datei adult.data: Schau dir mit dem Befehl head die ersten Zeilen an. Standardmäßig gibt head 10 Zeilen aus, mit dem Flag -n begrenzt du die Ausgabe, hier auf die ersten 2 Zeilen.
Du siehst, dass die Datei keine Kopfzeile hat. Die Spaltennamen stehen nicht in der Datei. Du kannst diese Kopfzeile hinzufügen, indem du zwei Dateien mit dem Befehl cat zusammenfügst.
Dateien zusammenfügen mit cat
Der Befehl cat gibt den Inhalt einer Datei auf der Standardausgabe (deinem Terminal) aus. Er kann auch zum Zusammenfügen mehrerer Dateien genutzt werden. Der Befehl cat file_1.csv file_2.csv > target_file.csv vereint den Inhalt von file_1.csv und file_2.csv in target_file.csv, wobei file_2.csv an das Ende von file_1.csv angehängt wird.
Die Header-Datei ist nicht im Originaldatensatz enthalten und muss erstellt werden. Dazu schreibst du die durch Kommas getrennte Liste der Spaltennamen mit echo in eine Datei header.csv.
$ echo"age,workclass,fnlwgt,education,education-num,marital-status,occupation,relationship,race,sex,capital-gain,capital-loss,native-country,class"> header.csvBereitgestellt von
In diesem Beispiel hast du die Shell-Umleitung > verwendet, um die Ausgabe von cat in die Datei adult.csv zu schreiben. > erstellt eine Datei oder überschreibt ihren Inhalt vollständig, wenn sie bereits existiert. Mit der doppelten Umleitung >> wird der neue Inhalt an eine bestehende Datei angehängt, ohne sie zu löschen.
Fügen wir nun die Datei header.csv an den Anfang von adult.data an. Gleichzeitig benennst du adult.data in adult.csv um, da es sich ja um eine CSV-Datei handelt.
Ein weiterer häufiger Fall in der Datenaufbereitung: Eine Datei ist beschädigt oder schlecht formatiert, zum Beispiel mit Nicht-UTF-8-Zeichen oder einem verrutschten Komma. Solche Fehler kannst du korrigieren, ohne die Datei zu öffnen – mit sed.
Das generische sed-Muster lautet
$ sed"s/<string to replace>/<string to replace it with>/g"<source_file>><target_file>.Bereitgestellt von
Im Datensatz adult.csv steht das Zeichen ? für fehlende Werte. Du kannst es mit sed durch einen besser geeigneten Standardwert ersetzen. Die leere Zeichenkette ist als Kennzeichnung für fehlende Werte vorzuziehen, weil sie beim Einlesen der Daten in einen Pandas DataFrame als NaN interpretiert wird.
Das liefert dir die Anzahl von 2.399 Zeilen mit mindestens einer Spalte, in der ? einen fehlenden Wert markiert. Der folgende Befehl ersetzt alle Spaltenwerte ? durch eine leere Zeichenkette. Alle Zellen, die nur aus ? gefolgt von einem Leerzeichen bestehen, sind danach wirklich leer.
Beachte, dass du im Such- und Ersetzungsmuster den Spaltentrenner , nutzt, um zu vermeiden, dass legitime Fragezeichen an anderer Stelle im Datensatz ersetzt werden.
Große Dateien ausschnittweise verarbeiten
Stell dir vor, du arbeitest mit einer Datei mit über 30 Millionen Zeilen. Während du dein Python- oder R-Skript erstellst, willst du deinen Workflow zunächst an einem Teil des Originaldatensatzes testen und nicht alles in den Speicher laden. Mit einer Kombination aus head und tail erzeugst du eine Stichprobe aus dem Original.
head gibt den Anfang von Dateien aus;
tail gibt das Ende von Dateien aus
Wie gesehen, nehmen diese Befehle das Flag -n (--lines), um die Zeilenanzahl der Ausgabe zu begrenzen. tail unterstützt außerdem -f (--follow) und gibt angehängte Daten aus, sobald sie ans Dateiende geschrieben werden. Das ist besonders praktisch zum Überwachen von Logdateien während deine Skripte laufen, zum Beispiel mit tail -f <logfile>.
In Kombination mit dem Pipe-Symbol | kannst du mit head und tail einen bestimmten Zeilenbereich aus einer Quelldatei extrahieren und in eine Teilmenge schreiben. Um beispielsweise 20 Zeilen ab Zeile 100 zu extrahieren:
Wichtig: Zuerst nimmst du mit headerste_zeile + anzahl_zeilen und danach mit tail die anzahl_zeilen. Der generische Befehl lautet:
$ head -n <total_lines><source_file>| tail -n <number_of_lines>><target_file>Bereitgestellt von
wobei total_lines = first_line + number_of_lines. Deine neue Stichprobe enthält jedoch keine Kopfzeile. Wir wissen bereits, wie wir den Header wieder hinzufügen: mit cat die Stichprobe und die zuvor erstellte header.csv zusammenfügen:
$ cat adult_sample.csv header.csv > adult_sample_with_header.csv
Bereitgestellt von
Beachte, dass du adult\_sample.csv nicht als Zieldatei verwendet, sondern eine neue Datei namens adult\_sample\_with\_header.csv erstellt hast. Wenn Quell- und Zieldatei beim Einsatz von cat denselben Namen haben, führt das zu unerwartetem Inhalt. Erstelle besser eine neue Ausgabedatei.
Duplikate finden mit uniq
Mit dem Befehl uniq findest du benachbarte, wiederholte Zeilen in einer Datei. uniq unterstützt mehrere nützliche Flags:
uniq -c: Fügt jeder Zeile die Anzahl der Wiederholungen hinzu;
uniq -d: Gibt nur doppelte Zeilen aus; und
uniq -u: Gibt nur eindeutige Zeilen aus.
Allerdings ist uniq nicht „smart“: Wiederholungen werden nur erkannt, wenn sie direkt aufeinander folgen. Daher musst du die Datei zuerst mit sort sortieren. Dieser Befehl zählt die Anzahl der doppelten Zeilen in adult.csv:
und zeigt, dass es 23 Duplikate gibt. Der nächste Befehl nimmt alle Zeilen mit hinzugefügten Zählungen, sortiert absteigend und gibt die ersten 3 Duplikate aus:
Durch verschiedene Flags in Kombination mit sort und uniq ergeben sich viele mächtige Optionen. Sieh dir man sort und man uniq an, um mehr zu entdecken.
Spalten auswählen mit cut
Das Schöne an CSV-Dateien und Shell-Befehlen: Du kannst auch auf Spaltenebene arbeiten, indem du mit cut bestimmte Spalten auswählst. cut nutzt dabei zwei Haupt-Flags: -d für das Spaltentrennzeichen und -f für die gewünschten Spalten. Im folgenden Beispiel verwendest du cut, um die Anzahl der unterschiedlichen Werte der kategorialen Variablen workclass (Spalte 2) zu ermitteln.
Wähle zunächst die Spalte workclass und leite sie an head weiter, um zu prüfen, dass du die richtige Spalte hast:
$ cut-d","-f2 adult.csv |head-3
workclass
State-gov
Self-emp-not-incBereitgestellt von
Um nun die Ausprägungen zu zählen, sortierst du die Ausgabe von cut und leitest sie an uniq -c weiter:
Das zeigt dir zum Beispiel, dass es 1.837 leere Werte gibt und die häufigste Klasse mit großem Abstand Private ist – mit 22.969 Vorkommen.
Die obige Befehlskette entspricht dem value_counts()-Aufruf auf einer DataFrame-Spalte aus den adult.csv-Daten.
Schleifen
Bis hierhin hast du meist mit einer Datei gearbeitet. Wenn du viele Dateien umbenennen, verarbeiten oder übertragen willst, gehören Schleifen in deinen Shell-Werkzeugkasten. Das generische Format einer Schleife in bash ist:
Setzen wir das um. Stell dir vor, du hast 1.000 Dateien mit Leerzeichen im Dateinamen und willst jedes Leerzeichen durch einen Unterstrich „_" ersetzen.
replace_source=' 'replace_target='_'forfilenamein ./*.csv;donew_filename=${filename//$replace_source/$replace_target}mv"$filename""$new_filename"doneBereitgestellt von
In diesem Beispiel:
Definierst du zuerst zwei Variablen: replace_source und replace_target als Platzhalter für Leerzeichen bzw. Unterstrich
Iterierst du über alle *.csv-Dateien im aktuellen Ordner
Erstellst du für jeden filename einen new_filename, indem du jedes Leerzeichen durch einen Unterstrich ersetzt
Bennennst du die Datei mit mv vom aktuellen in den neuen Dateinamen um
Tatsächlich hast du damit nicht nur über Dateien in einem Verzeichnis iteriert, sondern auch Variablen verwendet.
Variablen
Zum Abschluss dieser kleinen Einführung in Shell-Befehle noch ein Wort zu Variablen. Variablen legst du in der Shell so an:
Beachte, dass um das Gleichheitszeichen keine Leerzeichen stehen dürfen. var = '<a string>' würde nicht funktionieren. Um den Variablenwert auszugeben, verwendest du einfach echo:
Mit Schleifen und Variablen öffnest du die Tür zu komplexeren Dateimanipulationen – ein Einstieg ins Shell-Scripting, der über diesen Artikel hinausgeht. Fang klein an und erweitere Schritt für Schritt, dann ist Shell-Scripting gut machbar.
Fazit
Shell-Befehle sind im Alltag von Data Scientists extrem nützlich. Es gibt unzählige weitere Beispiele und Anwendungsfälle. Und oft führen verschiedene Wege zum Ziel – dank der Vielzahl an Shell-Befehlen und Flags. In solchen Fällen gilt: Einfach halten gewinnt.
Hoffentlich helfen dir die gezeigten Beispiele, Shell-Befehle in deinen Datenverarbeitungs-Workflow zu integrieren. Teile gern deine Shell-Tricks mit mir auf Twitter: @alexip.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Es gibt viele Situationen, in denen du große Dateien schnell analysieren, ändern und verarbeiten musst – sowohl viele Dateien als auch sehr große. Oft handelt es sich dabei um textbasierte CSV-Dateien (Comma Separated Values). Öffnest du sie mit Standard-Tabellenkalkulationen wie Excel, LibreOffice oder OpenOffice, sprengen sie schnell den Arbeitsspeicher deines Rechners. Auch die Stapelverarbeitung einer großen Anzahl von Dateien bricht nach ein paar Stunden oft wegen eines unerwarteten Dateifehlers ab.
Du verbringst dann zwangsläufig viel Zeit mit eingefrorenen Bildschirmen, Neustarts und Warterei.
Viele dieser Aufgaben lassen sich jedoch mit wenigen Zeilen Code erledigen. Noch besser: Wenn du ein paar einfache Shell-Befehle beherrschst, sparst du enorm Zeit und Nerven.
In diesem Beitrag bekommst du einen Überblick über Shell-Befehle, die ich fast täglich nutze. Ich hoffe, sie sind auch für dich hilfreich.
Kurznotizen
Beachte, dass es verschiedene Shell-Typen gibt (bash, zsh, ...). Bash ist am weitesten verbreitet, weil es die Standardshell auf macOS und den meisten Linux-Distributionen ist. Zsh (und Oh My Zsh) ist eine beliebte und leistungsstarke Alternative. Die in diesem Blogpost gezeigten Shell-Befehle wurden unter bash auf OS X (macOS) getestet und sollten auch in anderen Shells und Umgebungen funktionieren.
Alle folgenden Beispiele basieren auf dem Adult-Datensatz aus dem UCI Machine Learning Repository, auch als „Census Income“-Datensatz bekannt und hier verfügbar. Er wird häufig genutzt, um anhand von Zensusdaten vorherzusagen, ob das Einkommen \$50K/Jahr übersteigt. Mit 48.842 Zeilen und 14 Attributen ist er keineswegs groß, aber ideal, um die Beispiele zu illustrieren. Obwohl die Daten die Erweiterung
.datatragen, handelt es sich um eine sauber formatierte CSV-Datei. Lade dir den Datensatz gern herunter und mach mit!Zählen mit
wcDu hast eine neue Textdatei und willst wissen, wie viele Zeilen sie enthält. Das erledigt der Word-Count-Befehl
wc -l:Das zeigt dir, dass die Datei
adult.data32.562 Zeilen enthält. Das Flag-lweistwcan, die Zeilen zu zählen. Mit dem Flag-wkannst du stattdessen die Wörter zählen.Die Datei
adult.dataenthält knapp 500.000 Wörter.Mit
wckannst du auch die Anzahl von Dateien in einem Verzeichnis ermitteln, indem du die Ausgabe eines einfachenls -lals Eingabe anwcübergibst. Die Weitergabe der Ausgabe eines Befehls an einen anderen mit dem Pipe-Symbol|ist ein nützliches Shell-Muster namens Pipelining. Du wirst es in mehreren Beispielen in diesem Beitrag sehen.Angenommen, du hast nun einen Ordner mit vielen Dateien. Der folgende Befehl sagt dir genau, wie viele Dateien er enthält:
Mit Wildcards und Unterordnern gibt es noch viele weitere Anwendungsfälle für
wc.Zurück zu deiner Datei
adult.data: Schau dir mit dem Befehlheaddie ersten Zeilen an. Standardmäßig gibthead10 Zeilen aus, mit dem Flag-nbegrenzt du die Ausgabe, hier auf die ersten 2 Zeilen.Du siehst, dass die Datei keine Kopfzeile hat. Die Spaltennamen stehen nicht in der Datei. Du kannst diese Kopfzeile hinzufügen, indem du zwei Dateien mit dem Befehl
catzusammenfügst.Dateien zusammenfügen mit
catDer Befehl
catgibt den Inhalt einer Datei auf der Standardausgabe (deinem Terminal) aus. Er kann auch zum Zusammenfügen mehrerer Dateien genutzt werden. Der Befehlcat file_1.csv file_2.csv > target_file.csvvereint den Inhalt vonfile_1.csvundfile_2.csvintarget_file.csv, wobeifile_2.csvan das Ende vonfile_1.csvangehängt wird.Die Header-Datei ist nicht im Originaldatensatz enthalten und muss erstellt werden. Dazu schreibst du die durch Kommas getrennte Liste der Spaltennamen mit
echoin eine Dateiheader.csv.In diesem Beispiel hast du die Shell-Umleitung
>verwendet, um die Ausgabe voncatin die Dateiadult.csvzu schreiben.>erstellt eine Datei oder überschreibt ihren Inhalt vollständig, wenn sie bereits existiert. Mit der doppelten Umleitung>>wird der neue Inhalt an eine bestehende Datei angehängt, ohne sie zu löschen.Fügen wir nun die Datei
header.csvan den Anfang vonadult.dataan. Gleichzeitig benennst duadult.datainadult.csvum, da es sich ja um eine CSV-Datei handelt.Prüfe, ob die erste Zeile von
adult.csvdie Spaltennamen enthält:Dateien ändern mit
sedEin weiterer häufiger Fall in der Datenaufbereitung: Eine Datei ist beschädigt oder schlecht formatiert, zum Beispiel mit Nicht-UTF-8-Zeichen oder einem verrutschten Komma. Solche Fehler kannst du korrigieren, ohne die Datei zu öffnen – mit
sed.Das generische
sed-Muster lautetIm Datensatz
adult.csvsteht das Zeichen?für fehlende Werte. Du kannst es mitseddurch einen besser geeigneten Standardwert ersetzen. Die leere Zeichenkette ist als Kennzeichnung für fehlende Werte vorzuziehen, weil sie beim Einlesen der Daten in einen Pandas DataFrame alsNaNinterpretiert wird.Das liefert dir die Anzahl von 2.399 Zeilen mit mindestens einer Spalte, in der
?einen fehlenden Wert markiert. Der folgende Befehl ersetzt alle Spaltenwerte?durch eine leere Zeichenkette. Alle Zellen, die nur aus?gefolgt von einem Leerzeichen bestehen, sind danach wirklich leer.Beachte, dass du im Such- und Ersetzungsmuster den Spaltentrenner
,nutzt, um zu vermeiden, dass legitime Fragezeichen an anderer Stelle im Datensatz ersetzt werden.Große Dateien ausschnittweise verarbeiten
Stell dir vor, du arbeitest mit einer Datei mit über 30 Millionen Zeilen. Während du dein Python- oder R-Skript erstellst, willst du deinen Workflow zunächst an einem Teil des Originaldatensatzes testen und nicht alles in den Speicher laden. Mit einer Kombination aus
headundtailerzeugst du eine Stichprobe aus dem Original.headgibt den Anfang von Dateien aus;tailgibt das Ende von Dateien ausWie gesehen, nehmen diese Befehle das Flag
-n(--lines), um die Zeilenanzahl der Ausgabe zu begrenzen.tailunterstützt außerdem-f(--follow) und gibt angehängte Daten aus, sobald sie ans Dateiende geschrieben werden. Das ist besonders praktisch zum Überwachen von Logdateien während deine Skripte laufen, zum Beispiel mittail -f <logfile>.In Kombination mit dem Pipe-Symbol
|kannst du mitheadundtaileinen bestimmten Zeilenbereich aus einer Quelldatei extrahieren und in eine Teilmenge schreiben. Um beispielsweise 20 Zeilen ab Zeile 100 zu extrahieren:Wichtig: Zuerst nimmst du mit
headerste_zeile + anzahl_zeilen und danach mittaildie anzahl_zeilen. Der generische Befehl lautet:wobei
total_lines = first_line + number_of_lines. Deine neue Stichprobe enthält jedoch keine Kopfzeile. Wir wissen bereits, wie wir den Header wieder hinzufügen: mitcatdie Stichprobe und die zuvor erstellteheader.csvzusammenfügen:Beachte, dass du
adult\_sample.csvnicht als Zieldatei verwendet, sondern eine neue Datei namensadult\_sample\_with\_header.csverstellt hast. Wenn Quell- und Zieldatei beim Einsatz voncatdenselben Namen haben, führt das zu unerwartetem Inhalt. Erstelle besser eine neue Ausgabedatei.Duplikate finden mit
uniqMit dem Befehl
uniqfindest du benachbarte, wiederholte Zeilen in einer Datei.uniqunterstützt mehrere nützliche Flags:uniq -c: Fügt jeder Zeile die Anzahl der Wiederholungen hinzu;uniq -d: Gibt nur doppelte Zeilen aus; unduniq -u: Gibt nur eindeutige Zeilen aus.Allerdings ist
uniqnicht „smart“: Wiederholungen werden nur erkannt, wenn sie direkt aufeinander folgen. Daher musst du die Datei zuerst mitsortsortieren. Dieser Befehl zählt die Anzahl der doppelten Zeilen inadult.csv:und zeigt, dass es 23 Duplikate gibt. Der nächste Befehl nimmt alle Zeilen mit hinzugefügten Zählungen, sortiert absteigend und gibt die ersten 3 Duplikate aus:
Durch verschiedene Flags in Kombination mit
sortunduniqergeben sich viele mächtige Optionen. Sieh dirman sortundman uniqan, um mehr zu entdecken.Spalten auswählen mit
cutDas Schöne an CSV-Dateien und Shell-Befehlen: Du kannst auch auf Spaltenebene arbeiten, indem du mit
cutbestimmte Spalten auswählst.cutnutzt dabei zwei Haupt-Flags:-dfür das Spaltentrennzeichen und-ffür die gewünschten Spalten. Im folgenden Beispiel verwendest ducut, um die Anzahl der unterschiedlichen Werte der kategorialen Variablenworkclass(Spalte 2) zu ermitteln.Wähle zunächst die Spalte
workclassund leite sie anheadweiter, um zu prüfen, dass du die richtige Spalte hast:Um nun die Ausprägungen zu zählen, sortierst du die Ausgabe von
cutund leitest sie anuniq -cweiter:Das zeigt dir zum Beispiel, dass es 1.837 leere Werte gibt und die häufigste Klasse mit großem Abstand
Privateist – mit 22.969 Vorkommen.Die obige Befehlskette entspricht dem
value_counts()-Aufruf auf einer DataFrame-Spalte aus denadult.csv-Daten.Schleifen
Bis hierhin hast du meist mit einer Datei gearbeitet. Wenn du viele Dateien umbenennen, verarbeiten oder übertragen willst, gehören Schleifen in deinen Shell-Werkzeugkasten. Das generische Format einer Schleife in bash ist:
Setzen wir das um. Stell dir vor, du hast 1.000 Dateien mit Leerzeichen im Dateinamen und willst jedes Leerzeichen durch einen Unterstrich „_" ersetzen.
In diesem Beispiel:
replace_sourceundreplace_targetals Platzhalter für Leerzeichen bzw. Unterstrich*.csv-Dateien im aktuellen Ordnerfilenameeinennew_filename, indem du jedes Leerzeichen durch einen Unterstrich ersetztmvvom aktuellen in den neuen Dateinamen umTatsächlich hast du damit nicht nur über Dateien in einem Verzeichnis iteriert, sondern auch Variablen verwendet.
Variablen
Zum Abschluss dieser kleinen Einführung in Shell-Befehle noch ein Wort zu Variablen. Variablen legst du in der Shell so an:
Zum Beispiel:
Beachte, dass um das Gleichheitszeichen keine Leerzeichen stehen dürfen.
var = '<a string>'würde nicht funktionieren. Um den Variablenwert auszugeben, verwendest du einfachecho:Und um ihn in einem Skript zu nutzen, setzt du ihn – wie oben gesehen – in Anführungszeichen:
Mit Schleifen und Variablen öffnest du die Tür zu komplexeren Dateimanipulationen – ein Einstieg ins Shell-Scripting, der über diesen Artikel hinausgeht. Fang klein an und erweitere Schritt für Schritt, dann ist Shell-Scripting gut machbar.
Fazit
Shell-Befehle sind im Alltag von Data Scientists extrem nützlich. Es gibt unzählige weitere Beispiele und Anwendungsfälle. Und oft führen verschiedene Wege zum Ziel – dank der Vielzahl an Shell-Befehlen und Flags. In solchen Fällen gilt: Einfach halten gewinnt.
Hoffentlich helfen dir die gezeigten Beispiele, Shell-Befehle in deinen Datenverarbeitungs-Workflow zu integrieren. Teile gern deine Shell-Tricks mit mir auf Twitter: @alexip.
Sieh dir auch unser Tutorial Richte dir eine Data-Science-Umgebung auf deinem Rechner ein an.