slice
Mittels des slice
-Kommandos kann ein zusammenhängender Teilbereich aus der Eingabe ausgeschnitten werden. Dabei wird der Teilbereich als halb-offenes Intervall angegeben, wobei die Positionen von 0 an gezählt werden. Beim Auftreten eines ungültigen Datensatzes wird die Position weitergezählt. Enthält bspw. die Eingabe 1.000 Zeilen, mit 990 Datensätzen und 10 ungültigen Zeilen, dann sind die Positionen von 0
bis 999 durchnummeriert.
Das folgende Beispiel extrahiert alle (gültigen) Datensätze aus den Positionen 2 bis 4:
$ pica slice -s --start 2 --end 5 DUMP.dat.gz -o slice.dat
$ pica count --records slice.dat
3
Optionen
--start <number>
-
Startposition des Teilbereichs (Voreinstellung:
0
). --end <number>
-
Endposition des Teilbereichs; diese Position ist nicht mehr Teil der Ausgabe. Ist keine Endposition angegeben, wird der Teilbereich bis zum Ende der Eingabe fortgeführt. Diese Option ist nicht kombinierbar mit
--length
. --length <number>
-
Festlegen der maximalen Anzahl an Datensätzen, die in der Ausgabe enthalten sind. Diese Option kann nicht mit
--end
kombiniert werden. -g
,--gzip
- Komprimieren der Ausgabe im Gzip-Format.
--append
- Wenn die Ausgabedatei bereits existiert, wird die Ausgabe an die Datei angehangen. Ist das Flag nicht gesetzt, wird eine bestehende Datei standardmäßig überschrieben.
-p
,--progress
-
Anzeige des Fortschritts, der die Anzahl der eingelesenen gültigen sowie invaliden Datensätze anzeigt. Das Aktivieren der Option erfordert das Schreiben der Datensätze in eine Datei mittels
-o
bzw.--output
. -o
,--output
-
Angabe, in welche Datei die Ausgabe geschrieben werden soll. Standardmäßig wird die Ausgabe in die Standardausgabe
stdout
geschrieben.
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
Ausschneiden eines Teilbereichs fester Größe
Wenn die Eingabe ausreichend Datensätze enthält, kann beginnend bei einer festen Position (--start
) ein Teilbereich mit einer festen Länge (--length
) ausgeschnitten werden.
Im folgenden Beispiel wird beginnend beim dritten Datensatz (Position 2) ein Teilbereich mit einer Länge von zwei ausgeschnitten:
$ pica slice -s --start 2 --length 2 DUMP.dat.gz -o slice.dat
$ pica count --records slice.dat
2