Next: cut
Up: Von GNU'sMuscheln
Previous: cpio
csplit (context split) teilt eine Datei in mehrere Teile, wobei die
Trennstelle durch ein Suchmuster angegeben werden kann
csplit [-sk] [-f Prefix] [-n Stellen]
[-prefix= Prefix] [-digits= Stellen] [-quiet]
[-silent] [-keep-files] Datei Muster ...
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.
- -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
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.
split auf Seite
Stuart Kemp und David MacKenzie
Next: cut
Up: Von GNU'sMuscheln
Previous: cpio