Startseite > Textverarbeitung & Suche > csplit

csplit: Datei basierend auf Inhalt aufteilen

Der Befehl csplit wird verwendet, um den Inhalt einer Datei basierend auf einem bestimmten Muster (regulärer Ausdruck) oder einer Zeilennummer in mehrere kleinere Dateien aufzuteilen. Dies ist nützlich, wenn Sie große Protokolldateien oder Quellcode in bestimmte Abschnitte aufteilen, um sie zu analysieren oder zu verwalten.

Übersicht

csplit teilt eine Eingabedatei basierend auf angegebenen Mustern oder Zeilennummern in mehrere Ausgabedateien auf. Jede Ausgabedatei enthält einen fortlaufenden Abschnitt der Originaldatei, und die Dateinamen bestehen aus einem angegebenen Präfix und einem numerischen Suffix.

Hauptmerkmale

  • Aufteilung basierend auf regulären Ausdrücken oder Zeilennummern
  • Anpassbares Präfix und Format für Ausgabedateinamen
  • Einfache Extraktion und Verwaltung bestimmter Abschnitte großer Dateien

Wichtige Optionen

Steuerung der Ausgabedatei

Steuerung des Aufteilungsverhaltens

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`csplit` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Anwendungsbeispiele

Datei basierend auf Zeilennummern aufteilen

echo -e "$(seq 1 35)" > test.txt
csplit test.txt 10 20 30

Teilt die Datei test.txt an den Zeilen 10, 20 und 30 auf. (z. B. xx00: Zeilen 1-9, xx01: Zeilen 10-19, xx02: Zeilen 20-29, xx03: Zeile 30 bis zum Ende)

Datei basierend auf regulären Ausdrücken aufteilen

echo -e "Line 1\nLine 2\nERROR: First error\nLine 4\nLine 5\nERROR: Second error\nLine 7" > log.txt
csplit -f part_ log.txt '/^ERROR:/' '{*}'

Teilt die Datei log.txt basierend auf Zeilen, die mit '^ERROR:' beginnen, auf und legt das Dateipräfix auf 'part_' fest. '{*}' bedeutet, dass der Rest aller Inhalte in einer Datei zusammengefasst wird.

Aufteilen mit Angabe von Präfix und Ziffernanzahl

echo -e "[Section 1]\nContent A\n[Section 2]\nContent B\n[Section 3]\nContent C" > data.log
csplit -f my_file_ -n 3 data.log '/^\[Section \d+\]/' '{*}'

Teilt die Datei data.log anhand des Musters '[Section N]' auf und erstellt Dateinamen wie 'my_file_000', 'my_file_001' usw.

Aufteilen unter Ausschluss übereinstimmender Zeilen

echo -e "Line 1\nERROR: First error\nLine 3\nERROR: Second error" > log.txt
csplit --suppress-match -f no_error_ log.txt '/^ERROR:/' '{*}'

Teilt die Datei log.txt anhand des Musters '^ERROR:' auf, schließt jedoch Zeilen, die mit 'ERROR:' beginnen, von den einzelnen aufgeteilten Dateien aus.

Tipps & Hinweise

Der Befehl csplit ist leistungsstark, aber bei der Verwendung regulärer Ausdrücke ist Vorsicht geboten.

Nützliche Tipps

  • Setzen Sie reguläre Ausdrücke in Anführungszeichen, um die Interpretation durch die Shell zu verhindern.
  • Die Zeile, die als Aufteilungskriterium dient, wird standardmäßig zur ersten Zeile der nächsten Datei. Mit der Option `--suppress-match` können Sie diese Zeile ausschließen.
  • '{*}' bedeutet, dass die restlichen Dateien zu einer einzigen Datei zusammengefasst werden. Ohne diese Option werden die Inhalte nach dem letzten Aufteilungskriterium verworfen.

Hinweise

  • Originaldatei wird nicht geändert: csplit ändert die Originaldatei nicht, sondern erstellt neue aufgeteilte Dateien.
  • Fehlerbehandlung: Wenn reguläre Ausdrücke nicht übereinstimmen oder Zeilennummern ungültig sind, können Fehler auftreten. Insbesondere müssen reguläre Ausdrücke korrekt formuliert sein.

Gleiche Kategorie Befehle