split
Mithilfe des split
-Kommandos können alle Datensätze aus der Eingabe in mehrere Dateien aufgeteilt werden, wobei jede Datei eine maximale Anzahl an Datensätzen nicht überschreitet. Ein Anwendungsfall für das Splitting könnte eine automatisierte Stapelverarbeitung oder die parallele Verarbeitung der entstandenen Dateien sein.
Der folgende Aufruf des split
-Kommandos teilt die zwölf Datensätze der Eingabe (DUMP.dat.gz
) in drei Dateien mit maximal fünf Datensätzen pro Datei. Die ersten beiden Dateien (0.dat
und 1.dat
) enthalten die maximale Anzahl an Datensätzen, die letzte Datei (2.dat
) die restlichen zwei Datensätze.
$ pica split -s 5 DUMP.dat.gz
$ tree
.
├── 0.dat
├── 1.dat
├── 2.dat
└── DUMP.dat.gz
Optionen
-p
,--progress
- Anzeige des Fortschritts, der die Anzahl der eingelesenen gültigen sowie invaliden Datensätze anzeigt.
-g
,--gzip
- Komprimieren der Ausgabe im Gzip-Format.
--template
-
Template für die Dateinamen. Der Platzhalter
{}
wird durch eine fortlaufende Nummer ersetzt. -o <path>
,--outdir <path>
- Angabe, in welches Verzeichnis die Ausgabe geschrieben werden soll. Standardmäßig wird das aktuelle Verzeichnis verwendet.
Filter-Optionen
-s
,--skip-invalid
- Überspringt jene Zeilen aus der Eingabe, die nicht dekodiert werden konnten.
-l <number>
,--limit <number>
- Eingrenzung der Ausgabe auf die ersten n Datensätze.
-i
,--ignore-case
- Groß- und Kleinschreibung wird bei Vergleichen ignoriert.
--strsim-threshold <value>
-
Festlegen des Schwellenwerts beim Ähnlichkeitsvergleich von Zeichenketten mittels
=*
. -A <file>
,--allow-list
<file>
- Es werden alle Datensätze ignoriert, die nicht explizit in der Positivliste auftauchen. Werden mehrere Positivlisten angegeben, wird die Mengenvereinigung aus allen Listen gebildet.
-D <file>
,--deny-list
<file>
- Es werden alle Datensätze ignoriert, die in der Negativliste auftauchen. Werden mehrere Negativlisten angegeben, wird die Mengenvereinigung aus allen Listen gebildet.
--filter-set-column <column>
-
Legt den Spaltennamen fest, der die Referenzwerte einer Allow- bzw. Deny-Liste enthält. Wird die Option nicht angegeben, werden die Werte aus der Spalte
ppn
bzw.idn
ausgelesen. Dieidn
-Spalte wird nur versucht zu lesen, wenn keineppn
-Spalte vorhanden ist. --filter-set-path <path>
-
Ein Pfadausdruck, der zur Ermittlung der Vergleichswerte genutzt wird. Ist die Option nicht angegeben, wird von einem Vergleich mit der PPN im Feld
003@.0
eines Datensatzes ausgegen. --where <expr>
- Angabe eines Filters, um Datensätze aus der Eingabe auszuwählen.
--and <expr>
-
Hinzufügen eines zusätzlichen Filters mittels der booleschen
&&
-Verknüpfung. Der ursprüngliche Filterausdruck<filter>
wird zum Ausdruck<filter> && <expr>
. --or <expr>
-
Hinzufügen eines zusätzlichen Filters mittels der booleschen
||
-Verknüpfung. Der ursprüngliche Filterausdruck<filter>
wird zum Ausdruck<filter> || <expr>
. --not <expr>
-
Hinzufügen eines zusätzlichen Filters. Der ursprüngliche Filterausdruck
<filter>
wird zum Ausdruck<filter> && !(<expr>)
.
Beispiele
Benutzerdefinierte Dateinamen
Standardmäßig werden die erstellten Dateien beginnend bei 0
durchnummeriert. Der Dateiname kann individuell mit der --template
-Option angepasst werden. Jedes Vorkommen der Zeichenfolge {}
im Template wird durch die aktuelle Nummer ersetzt. Endet die Datei auf der Dateiendung .gz
, wird die Ausgabe automatisch im Gzip-Format komprimiert.
$ pica split -s --template "CHUNK_{}.dat.gz" 10 DUMP.dat.gz
$ tree
.
├── CHUNK_0.dat.gz
├── CHUNK_1.dat.gz
└── DUMP.dat.gz
$ pica count --records CHUNK_0.dat.gz
10
$ pica count --records CHUNK_1.dat.gz
2
Komprimierte Ausgabe
Mittels der Option --gzip
bzw. -g
erfolgt eine Komprimierung der Ausgabe:
$ pica split -s --gzip 10 DUMP.dat.gz
$ tree
.
├── 0.dat.gz
├── 1.dat.gz
└── DUMP.dat.gz
$ pica count --records 0.dat.gz
10
$ pica count --records 1.dat.gz
2