Linux Csplit Befehl erklärt für Anfänger (6 Beispiele)

Während Sie unter Linux an der Befehlszeile arbeiten, können Sie sich in Situationen befinden, in denen Sie eine Datei in mehrere Teile aufteilen müssen. Wenn Sie bereits auf der Suche nach einem Weg sind, dies zu tun, oder einfach nur wissen wollen, wie dies möglich ist, werden Sie sich freuen zu erfahren, dass es ein Tool – csplit genannt – gibt, das zu diesem Zweck entwickelt wurde.

In diesem Tutorial werden wir die Grundlagen dieses Tools besprechen und erfahren, wie es eingesetzt werden kann. Aber bevor wir das tun, ist es erwähnenswert, dass alle hier erwähnten Befehle/Anweisungen auf Ubuntu 18.04 LTS getestet wurden.

Linux Csplit Befehl

So definiert es die Man Page des Befehls:

csplit - split a file into sections determined by context lines

Es folgt die generische Syntax:

csplit [OPTION]... FILE PATTERN...

Die einzelnen kleinen Dateien, die von csplit erstellt werden, haben Namen wie xx00 und xx01. Die folgende Definition – entnommen aus der Manualseite des Befehls – soll die Dinge klarer machen:

Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ..., and output byte 
counts of each piece to standard output.

Die folgenden Q&A-Beispiele sollen Ihnen einen guten Eindruck davon vermitteln, wie der csplit-Befehl funktioniert.

Q1. Wie kann man Dateien nach der Anzahl der Zeilen aufteilen?

Angenommen, Ihre Datei enthält 6 Zeilen, und die Anforderung wird in der dritten Zeile aufgeteilt, dann kann dies durch Übergabe von’3′ als Befehlszeilenargument nach dem Befehl und dem Dateinamen erfolgen.

In unserem Fall enthielt file1 beispielsweise die folgenden Zeilen:

1       Asia
2      Africa
3      Europe
4   North America
5   South America
6     Australia

Und hier ist der Befehl, den wir ausgeführt haben:

csplit file1 3

Dateien nach Anzahl der Zeilen aufteilen

Die in der Ausgabe erzeugten Zahlen sind die Byteanzahl für die Dateien, die der Befehl erzeugt hat. Natürlich wurden in der Ausgabe zwei Dateien erzeugt, nämlich xx00 und xx01.

Dateien nach Zeilenzahl aufteilen - Ergebnis

Der Inhalt dieser Dateien bestätigt, dass der Split bei Zeile 3 stattgefunden hat.

Q2. Wie kann man Dateien mit Hilfe von regulären Ausdrücken aufteilen?

Sie können auch reguläre Ausdrücke mit dem Befehl csplit verwenden. Wenn Sie beispielsweise im vorherigen Fall möchten, dass das Werkzeug das Muster noch einmal wiederholt, können Sie dies mit dem folgenden Befehl tun:

csplit file1 3 {1}

In diesem Fall wurden also drei Ausgabedateien erzeugt:

Dateien mit Hilfe von regulären Ausdrücken aufteilen

Q3. Wie kann man ein benutzerdefiniertes Präfix anstelle des standardmäßigen’xx‘ verwenden?

Standardmäßig haben die Dateien, die csplit in der Ausgabe erzeugt, das Präfix’xx‘. Wenn Sie möchten, können Sie das Präfix jedoch mit der Kommandozeilenoption -f ändern, die das neue Präfix als Eingabe benötigt.

Der folgende Befehl erzeugt beispielsweise Dateien mit dem Präfix’htf‘.

csplit file1 1 -f htf

benutzerdefiniertes Präfix anstelle des Standardpräfixes

Q4. Wie kann man csplit dazu bringen, im Fehlerfall Ausgabedateien nicht zu entfernen?

Der Befehl csplit entfernt standardmäßig Ausgabedateien (alle, falls erstellt), sobald er auf eine Fehlersituation stößt. Der folgende Screenshot bestätigt beispielsweise, dass keine Ausgabedatei erzeugt wurde:

zwingen csplit, die Ausgabedateien im Fehlerfall nicht zu entfernen.

Wenn Sie möchten, können Sie dieses Verhalten jedoch ändern, indem Sie die Option -k im Befehl verwenden. Beispielsweise wurde der gleiche Befehl erneut ausgeführt, aber mit dieser Option, und die Ausgabedateien wurden diesmal nicht gelöscht.

zwingen csplit, die Ausgabedateien im Fehlerfall nicht zu entfernen - Ergebnis

Q5. Wie kann man Zeilen unterdrücken, die dem Eingabemuster entsprechen?

Der Befehl csplit bietet auch die Möglichkeit, Zeilen zu unterdrücken, die dem Eingabemuster entsprechen. Die fragliche Option ist –suppress-matched.

Der folgende Befehl teilt beispielsweise die Datei (file1) in Zeile 2 auf (xx00 enthält Zeile 1, während xx11 den Rest der Zeilen enthält).

csplit file1 2

Aber wenn du die Zeile 2 unterdrücken willst, dann kannst du den folgenden Befehl ausführen:

csplit --suppress-matched file1 2

Q6. Wie kann man eine benutzerdefinierte Anzahl von Ziffern anstelle der Standard-2 verwenden?

Genau wie das Präfix selbst ist auch die Anzahl der Stellen, die auf das Präfix in den Ausgabedateinamen folgen, anpassbar. Angenommen, Sie möchten Namen wie xx000 und xx0001 haben, können Sie dies mit der Befehlszeilenoption -n tun, die eine Eingabezahl erfordert, die die neue Anzahl der Ziffern angibt.

Zum Beispiel:

csplit -n 1 file1 2

Der vorgenannte Befehl würde Dateinamen wie xx0, xx1 und so weiter erzeugen.

Fazit

Ein durchschnittlicher Linux-Kommandozeilenbenutzer benötigt csplit möglicherweise nicht täglich, aber es ist definitiv ein wichtiges Dienstprogramm, über das Sie zumindest Bescheid wissen sollten. Wir haben hier die meisten grundlegenden Beispiele und Befehlszeilenoptionen behandelt. Probieren Sie sie aus, und gehen Sie dann auf die Man Page des Tools, um mehr darüber zu erfahren.

Das könnte dich auch interessieren …