GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Bei der Arbeit an der Befehlszeile unter Linux können Sie sich in Situationen wiederfinden, in denen Sie eine Datei in mehrere Teile aufteilen müssen. Wenn Sie bereits nach einer Möglichkeit suchen, dies zu tun, oder einfach nur wissen möchten, wie dies bewerkstelligt werden kann, werden Sie froh sein, dass es ein Tool namens csplit gibt - das für diesen Zweck gebaut wurde.

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

Linux-Csplit-Befehl

So wird es in der Manpage des Befehls definiert:

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 Manpage des Befehls - sollte 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-artigen Beispiele sollen Ihnen eine gute Vorstellung davon vermitteln, wie der csplit-Befehl funktioniert.

Q1. Wie teilt man Dateien basierend auf der Anzahl der Zeilen auf?

Angenommen, Ihre Datei enthält 6 Zeilen und die Anforderung ist, diese Datei in der dritten Zeile aufzuteilen, 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

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

Der Inhalt dieser Dateien bestätigt, dass die Teilung in Zeile 3 stattfand.

Q2. Wie teilt man Dateien mit regulären Ausdrücken?

Sie können auch reguläre Ausdrücke mit dem csplit-Befehl verwenden. Wenn Sie beispielsweise im vorherigen Fall möchten, dass das Tool 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:

Q3. Wie bekomme ich ein benutzerdefiniertes Präfix anstelle des standardmäßigen „xx“?

Standardmäßig haben die Dateien, die csplit in der Ausgabe erzeugt, „xx“ als Präfix. Wenn Sie möchten, können Sie das Präfix jedoch mit dem -f ändern Befehlszeilenoption, 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

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

Der csplit-Befehl entfernt standardmäßig Ausgabedateien (alle, sofern erstellt), sobald eine Fehlersituation auftritt. Der folgende Screenshot bestätigt beispielsweise, dass letztendlich keine Ausgabedatei erstellt wurde:

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

F5. Wie unterdrücke ich Zeilen, die mit dem Eingabemuster übereinstimmen?

Der csplit-Befehl bietet auch eine Option zum Unterdrücken von Zeilen, die dem Eingabemuster entsprechen. Die fragliche Option ist --suppress-matched .

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

csplit file1 2

Wenn Sie jedoch Zeile 2 unterdrücken möchten, können Sie den folgenden Befehl ausführen:

csplit --suppress-matched file1 2

Q6. Wie verwende ich eine benutzerdefinierte Anzahl von Ziffern anstelle der Standardeinstellung 2?

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

Zum Beispiel:

csplit -n 1 file1 2

Der oben genannte Befehl würde Dateinamen wie xx0, xx1 usw. erzeugen.

Schlussfolgerung

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


Linux
  1. Linux-Einfügebefehl für Anfänger erklärt (5 Beispiele)

  2. Linux wc Befehl für Anfänger erklärt (6 Beispiele)

  3. Linux-Unexpand-Befehl für Anfänger erklärt (mit Beispielen)

  4. Linux-Exit-Befehl für Anfänger erklärt (mit Beispielen)

  5. Linux-objdump-Befehl für Anfänger erklärt (7 Beispiele)

Linux cut Befehl für Anfänger erklärt (mit Beispielen)

Linux-Timeout-Befehl für Anfänger erklärt (mit Beispielen)

Linux dd-Befehl für Anfänger erklärt (8 Beispiele)

Linux-mv-Befehl für Anfänger erklärt (8 Beispiele)

Linux-md5sum-Befehl für Anfänger erklärt (5 Beispiele)

Linux-Host-Befehl für Anfänger erklärt (8 Beispiele)