Next: cut
Up: Von GNU's, Muscheln und
Previous: cpio
Subsections
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
Stuart Kemp und David MacKenzie
Next: cut
Up: Von GNU's, Muscheln und
Previous: cpio
Das Linux Anwenderhandbuch
(C) 1997
LunetIX