Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ csplit(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

sed(1)

sh(1)

split(1)

csplit(1)                                                         csplit(1)

NAME
     csplit - Datei nach bestimmten Kriterien unterteilen (context split)

SYNTAX
     csplit [option ...] datei argument ...

BESCHREIBUNG
     csplit teilt den Inhalt einer Datei oder den Eingabetext, den csplit
     von der Standardeingabe liest, in kleinere Abschnitte auf. Die
     Abschnitte, oder nur einige dieser Abschnitte, schreibt csplit in je
     eine Ausgabedatei. Die ursprüngliche Datei bleibt erhalten.

     Mit Hilfe von Argumenten geben Sie an, wie csplit die Datei aufteilen
     und für welche Abschnitte csplit Ausgabedateien erstellen soll.

     Ohne Angabe von -n erstellt csplit pro Aufruf höchstens 100 Ausgabeda-
     teien.

OPTIONEN
     Keine Option angegeben:
          Die Ausgabedateien heißen xx00, xx01 usw.

          Auf die Standardausgabe gibt csplit für jede erstellte Ausgabeda-
          tei die Anzahl der Zeichen aus, die in dieser Datei stehen.

          Tritt ein Fehler auf, so entfernt csplit alle bereits erstellten
          Dateien.

     -f name
          Die Ausgabedateien heißen name00, name01 usw.

          -f nicht angegeben:

          Die Ausgabedateien heißen xx00, xx01 usw.

     -k   Tritt ein Fehler auf, so bleiben die bereits erstellten Dateien
          erhalten.

     -n zahl
          Die laufende Nummer der Ausgabedateien besteht aus zahl Ziffern,
          wobei 1 <= zahl <= 9.

          Beispiel: Bei -n 4 heißen die Ausgabedateien xx0000, xx0001 usw.

          -n nicht angegeben:

          Die laufende Nummer besteht aus 2 Ziffern.

     -s   Die Ausgabe der Zeichenanzahl wird unterdrückt.

     --   Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
          beginnt.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

csplit(1)                                                         csplit(1)

     datei
          Name der Eingabedatei.

          Wenn Sie für datei einen Bindestrich - eingeben, liest csplit von
          der Standardeingabe.

     argument
          Sie können mehrere Argumente angeben. Jedes Argument verweist auf
          eine Zeile der Eingabedatei. Diese Zeilen bilden die Trennlinien
          zwischen den Abschnitten, in die csplit die Datei aufteilt: Jede
          solche Zeile ist die erste Zeile eines Abschnitts. Geben Sie n
          Argumente an, dann teilt csplit die Eingabedatei in n+1
          Abschnitte auf. Die Abschnitte enthalten also jeweils folgende
          Zeilen:
          ________________________________________________________________
         | Abschnitt|  Inhalt                                            |
         |__________|____________________________________________________|
         | 0        |  Alle Zeilen vom Beginn der Eingabedatei bis (aus- |
         |          |  schließlich) zu der Zeile, auf die das 1. Argument|
         |          |  verweist.                                         |
         |__________|____________________________________________________|
         | 1        |  Alle Zeilen von der Zeile, auf die das 1. Argument|
         |          |  verweist, bis (ausschließlich) zu der Zeile, auf  |
         |          |  die das 2. Argument verweist.                     |
         |__________|____________________________________________________|
         | ...      |  ...                                               |
         |__________|____________________________________________________|
         | n        |  Alle Zeilen von der Zeile, auf die das n-te Argu- |
         |          |  ment verweist, bis zum Ende der Eingabedatei.     |
         |__________|____________________________________________________|

          Normalerweise schreibt csplit jeden Abschnitt in eine Ausgabeda-
          tei.

          Ausnahme: siehe das Argument %regulärerausdruck%[+zahl][-zahl].
          Der letzte Abschnitt (Abschnitt n) wird auf jeden Fall in eine
          Ausgabedatei geschrieben.

          csplit arbeitet die Argumente der Reihe nach ab. Zu Beginn ist
          die erste Zeile der Eingabedatei die aktuelle Zeile. Ist ein
          Argument abgearbeitet, so wird die Zeile, auf die dieses Argument
          verweist, zur aktuellen Zeile. Die Zeile, auf die das darauffol-
          gende Argument verweist, muß sich in dem Bereich zwischen der
          aktuellen Zeile (ausschließlich) und dem Ende der Eingabedatei
          befinden. Z. B. muß die Zeile, auf die das zweite Argument ver-
          weist, in der Eingabedatei nach der Zeile stehen, auf die das
          erste Argument verweist.







Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

csplit(1)                                                         csplit(1)

          argument kann sein:

          /regulärerausdruck/[+zahl][-zahl]
               Ein Argument der Form /regulärerausdruck/ verweist, ausge-
               hend von der aktuellen Zeile, auf die nächste Zeile, die zu
               dem regulären Ausdruck paßt. csplit schreibt den Abschnitt
               von der aktuellen Zeile bis (ausschließlich) zu der Zeile,
               die zu dem regulären Ausdruck paßt, in eine Ausgabedatei.
               Dann wird die zum regulären Ausdruck passende Zeile zur
               aktuellen Zeile.

               Zusammen mit +zahl oder -zahl verschiebt sich die
               Abschnittsgrenze um zahl Zeilen hinter (+) oder vor (-) die
               Zeile, die zu dem regulären Ausdruck paßt. Entsprechend wird
               die Zeile, die zahl Zeilen hinter (+) bzw. vor (-) der zum
               regulären Ausdruck passenden Zeile steht, zur aktuellen
               Zeile.

               Zulässig sind einfache reguläre Ausdrücke [siehe
               expressions(5)]. Enthält das Argument Leerzeichen oder Son-
               derzeichen der Shell [siehe specialchar(5)], dann müssen Sie
               diese Zeichen mit einem Gegenschrägstrich \ entwerten oder
               das Argument in Hochkommata '...' einschließen. Der reguläre
               Ausdruck darf keine Neue-Zeile-Zeichen enthalten.

          %regulärerausdruck%[+zahl][-zahl]
               Ein Argument der Form %regulärerausdruck% verweist, ausge-
               hend von der aktuellen Zeile, auf die nächste Zeile, die zu
               dem regulären Ausdruck paßt. Die zum regulären Ausdruck pas-
               sende Zeile wird zur aktuellen Zeile. csplit erstellt für
               den betreffenden Abschnitt keine Ausgabedatei.

               Zusammen mit +zahl oder -zahl wird die Zeile, die zahl Zei-
               len hinter (+) bzw. vor (-) der zum regulären Ausdruck pas-
               senden Zeile steht, zur aktuellen Zeile.

               Zulässig sind einfache reguläre Ausdrücke [siehe
               expressions(5)]. Enthält das Argument Leerzeichen oder Son-
               derzeichen der Shell [siehe specialchar(5)], dann müssen Sie
               diese Zeichen mit einem Gegenschrägstrich \ entwerten oder
               das Argument in Hochkommata '...' einschließen. Der reguläre
               Ausdruck darf keine Neue-Zeile-Zeichen enthalten.

          nr   Dieses Argument verweist auf die Zeile mit der Nummer nr.
               csplit schreibt den Abschnitt von der aktuellen Zeile bis
               (ausschließlich) zur nr-ten Zeile in eine Ausgabedatei. Dann
               wird die nr-te Zeile zur aktuellen Zeile.

          {n}  Dieses Argument steht abkürzend für n Argumente der oben
               beschriebenen Formen und bedeutet: "Vorhergehendes Argument
               n weitere Male verwenden". n ist eine ganze Zahl größer
               gleich 1.


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

csplit(1)                                                         csplit(1)

               Das Argument {n} kann, getrennt durch Leerzeichen, auf jedes
               der obengenannten Argumente folgen.

               Folgt es auf ein Argument der Form
               /regulärerausdruck/[+zahl][-zahl] oder
               %regulärerausdruck%[+zahl][-zahl], so wird dieses Argument
               n weitere Male verwendet.

               Beispiel:

               '/regausdruck/' {2}

               ist eine Abkürzung für

               '/regausdruck/' '/regausdruck/' '/regausdruck/'

               Folgt {n} auf ein Argument der Form nr, so wird die Datei ab
               der nr-ten Zeile n-mal alle nr Zeilen unterteilt.

               Beispiel:

               100 {2}

               ist eine Abkürzung für

               100 200 300

FEHLERMELDUNGEN
     argument - out of range

     Die Zeile, auf die das Argument argument verweist, befindet sich
     außerhalb des zulässigen Bereichs. Der zulässige Bereich erstreckt
     sich von der aktuellen Zeile (ausschließlich) bis zum Dateiende.

     'xx' file limit reached ...

     Sie haben so viele Argumente angeben, daß csplit mehr Ausgabedateien
     anlegen müßte, als der bei der Option -n angegebene Wert erlaubt.

INTERNATIONALE UMGEBUNG
     Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
     texte. LCCTYPE bestimmt die Zeichenklassen und die Zeichenkonvertie-
     rung.

     Wenn LCMESSAGES oder LCCTYPE nicht oder als leere Zeichenkette defi-
     niert ist, wird der Wert von LANG als Standardwert für die jeweils
     nicht gesetzte oder leere Variable herangezogen. Ist auch LANG nicht
     oder als leere Zeichenkette definiert, verhält sich das System so, als
     wäre es nicht internationalisiert.

     Hat eine der Variablen für die internationale Umgebung einen ungülti-
     gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

csplit(1)                                                         csplit(1)

     Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
     bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
     Bereich der Internationalisierung.

BEISPIELE
     Beispiel  1

     Die Datei buch enthält einen Text, der in drei Kapitel gegliedert ist.
     Vor dem ersten Kapitel steht ein Vorwort, nach dem letzten ein Anhang.
     Jedes Kapitel beginnt mit der Überschrift "KAPITEL ..."; der Anhang
     hat die Überschrift "ANHANG".

     Sie wollen nun das Vorwort, die einzelnen Kapitel und den Anhang
     jeweils in eine eigene Datei schreiben. Die Ausgabedateien sollen
     kap00, kap01 usw. heißen.

     $ csplit -f kap buch '/KAPITEL/' '/KAPITEL/' '/KAPITEL/' '/ANHANG/'
     1636
     15124
     32743
     20344
     2576

     $ ls
     buch
     kap00
     kap01
     kap02
     kap03
     kap04

     Die Datei kap00 enthält das Vorwort; sie besteht aus 1636 Zeichen. Der
     Anhang steht in der Datei kap04.

     Der folgende, kürzere csplit-Aufruf hat die gleiche Wirkung:

     $ csplit -f kap buch '/KAPITEL/' {2} '/ANHANG/'
     .
     .

     Nun können Sie die Abschnitte getrennt editieren. Danach setzen Sie
     sie mit cat wieder zusammen:

     $ cat kap0[0-4] > buch

     Beispiel 2

     Eine Eingabedatei datei soll bei jeder hundertsten Zeile unterteilt
     werden. Dazu geben Sie ein:

     $ csplit datei 100 {98}



Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

csplit(1)                                                         csplit(1)

     Das Argument {98} steht für 98 Argumente: 200 300 ... 9900.

     Enthält datei 9900 oder mehr Zeilen, dann erstellt csplit 100 Ausgabe-
     dateien. Die erste Ausgabedatei xx00 enthält Zeile 1 bis 99 (ein-
     schließlich), die letzte Ausgabedatei xx99 enthält den Rest von datei
     ab Zeile 9900. Enthält datei weniger als 9900 Zeilen, dann gibt csplit
     die Fehlermeldung {98} - out of range aus und bricht ab. Geben Sie
     beim Aufruf die Option -k an, dann bleiben die bereits erstellten
     Dateien erhalten:

     $ csplit -k datei 100 {98}

     Enthält datei z. B. nur 9830 Zeilen, dann ist xx98 die zuletzt
     erstellte Ausgabedatei und enthält die Zeilen 9800 bis 9830.

     Beispiel 3

     Die Datei prog.c enthält ein C-Quellprogramm. Das Programm enthält die
     Funktion main sowie höchstens 20 weitere Funktionen. Jede Funktion
     endet gemäß den C-Konventionen mit einer schließenden geschweiften
     Klammer am Anfang der Zeile (1. Spalte). Innerhalb einer Funktion ste-
     hen schließende geschweifte Klammern nicht in der 1. Spalte einer
     Zeile.

     Jede Funktion soll in eine eigene Datei geschrieben werden. Dazu geben
     Sie ein:

     $ csplit -k prog.c '%main(%' '/^}/+1' {19}

     Enthält das Programm außer der Funktion main genau 20 weitere Funktio-
     nen, dann teilt csplit die Datei in 22 Abschnitte auf. Abschnitt 0
     enthält alle Zeilen vom Beginn der Datei bis ausschließlich zum Beginn
     der Funktion main. Dieser Abschnitt wird in keine Ausgabedatei
     geschrieben (Argument %main(%).

     Abschnitt 1 enthält die Funktion main und wird in die Ausgabedatei
     xx00 geschrieben (Argument /^}/+1). Entsprechend werden sukzessive die
     Funktionen 1 bis 19 in Ausgabedateien geschrieben (Argument {19}). Zum
     Schluß wird Abschnitt 22, der den Rest der Eingabedatei enthält (das
     ist gerade die 20. Funktion), in die Ausgabedatei xx20 geschrieben.

     Enthält das Programm weniger Funktionen, so bricht csplit bei der
     letzten Funktion mit der Fehlermeldung {19} - out of range ab. Da
     jedoch Option -k gesetzt ist, bleiben die erstellten Ausgabedateien
     erhalten.

SIEHE AUCH
     ed(1), sed(1), sh(1), split(1).






Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026