next up previous contents index
Next: cut Up: Von GNU's, Muscheln und Previous: cpio

Subsections


csplit

       

Funktion:

csplit (context split) teilt eine Datei in mehrere Teile, wobei die Trennstelle durch ein Suchmuster angegeben werden kann

Syntax:

csplit [-sk] [-f Prefix] [-n Stellen] [-prefix=Prefix] [-digits=Stellen] [-quiet] [-silent] [-keep-files] Datei Muster ...

Beschreibung:

Mit csplit können Sie beliebige Textdateien an bestimmten kontextabhängigen Stellen zerteilen. Aus einer Eingabedatei (oder der Standardeingabe) werden mehrere Ausgabedateien erzeugt, denen Inhalt von einem Suchmuster abhängig gemacht werden kann. Die erste Zeile, in der das Muster vorkommt, wird zur ersten Zeile der nächsten Datei. Das Muster muß folgendermaßen angegeben werden:

/Ausdruck/[Offset] {Anzahl}
erzeugt eine Ausgabedatei, die alle Zeilen der Eingabe bis (ausschließlich) zu der Zeile mit dem Ausdruck enthält. Wird zusätzlich eine Zahl {Anzahl} in geschweiften Klammern angegeben, wird der Vorgang mit dem gleichen Ausdruck und dem verbleibenden Rest Anzahl mal wiederholt. Wird zusätzlich eine ganze Zahl mit einem führenden `+' oder `-' als Offset angegeben, so wird der Beginn der nächsten Datei um diese Anzahl Zeilen verschoben.
%Ausdruck%[Offset] {Anzahl}
arbeitet im Prinzip wie die vorher beschriebene Option, mit der Abweichung, daß keine Ausgabedatei erzeugt wird, dieser Teil der Eingabe also ignoriert wird.
Nummer
(eine einfache ganze Zahl) als Muster erzeugt eine Ausgabedatei aus den Nummer folgenden Zeilen.

Die Namen der Ausgabedateien bestehen aus dem Prefix und einer normalerweise zweistelligen Zahl. Der Standard für Prefix ist xx. Tritt während der Ausführung von csplit ein Fehler auf, so werden die bis dahin angelegten Dateien gelöscht.

Optionen:

-s
(silent) die Ausgabe der Ausgabedateigröße wird unterdrückt
-k
(keep) bei einem Abbruch von csplit werden die bereits angelegten Dateien nicht gelöscht
-f Prefix
die Ausgabedateien erhalten den Prefix als Namen
-n Stellen
die Ausgabedateien erhalten Nummern mit der angegebenen Anzahl Stellen

Beispiel:

Wenn Sie beispielsweise Ihre Mailbox (das ist die Datei, in der all ihre persönlichen eMails aneinandergehängt sind) auseinandernehmen wollen, können Sie das folgende Kommando versuchen:
$ csplit -k /var/spool/mail/$LOGNAME /^From / {100}
812
770
695
2279
2279
3201
975
1964
2946
csplit: `/^From /': match not found on repetition 9
1188
$ _
Ihre Mailbox mit ankommender Mail befindet sich standardmäßig im Verzeichnis /var/spool/mail und trägt Ihren Benutzernamen. Die einzelnen Mails werden durch sogenannte Header - also Briefköpfe - eingeleitet. Die Details zum Aufbau dieser Briefköpfe sind installationsabhängig. Die Suche nach einer Zeile, die mit From und einem darauffolgenden Leerzeichen beginnt, sollte aber mehr oder weniger exakt auf den Anfang des Mailheaders treffen.

Weil Sie wahrscheinlich nicht genau wissen, wie viele Mails in Ihrer Mailbox liegen, können Sie durch Angabe einer relativ hohen Zahl zusammen mit der -k Option erreichen, daß alle Mails getrennt und nach dem vorzeitigen Scheitern (hier nach dem 9. Durchgang) die bereits erzeugten Dateien nicht wieder gelöscht werden.

Die Dateien mit den einzelnen Mails werden im aktuellen Verzeichnis angelegt (Schreibberechtigung vorausgesetzt) und heißen xx00 bis xx09.

Siehe auch:

split

Autor:

Stuart Kemp und David MacKenzie


next up previous contents index
Next: cut Up: Von GNU's, Muscheln und Previous: cpio

Das Linux Anwenderhandbuch
(C) 1997 LunetIX