count
Soll die Anzahl der Datensätze und deren Felder sowie Unterfelder ermittelt werden, kann dies mit dem count-Kommando erfolgen. Ungültige Datensätze können mit dem Flag --skip-invalid (bzw. -s) übersprungen werden. Im folgenden Beispiel wird die Datei DUMP.dat.gz eingelesen und die Anzahl der in der Datei enthaltenen Datensätzes (records), Felder (_fields) und Unterfelder (subfields) ausgegeben:
$ pica count -s DUMP.dat.gz
records: 12
fields: 1035
subfields: 3973Optionen
--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.
--records-
Gibt nur die Anzahl der vorhandenen Datensätze aus. Dieses Flag ist nicht mit den Optionen
--fields,--subfields,--csv,--tsvund--no-headerkombinierbar. --fields-
Gibt nur die Anzahl der vorhandenen Felder aus. Dieses Flag ist nicht mit den Optionen
--records,--subfields,--csv,--tsvund--no-headerkombinierbar. --subfields-
Gibt nur die Anzahl der vorhandenen Unterfelder aus. Dieses Flag ist nicht mit den Optionen
--records,--fields,--csv,--tsvund--no-headerkombinierbar. --csv- Die Ausgabe erfolgt im CSV-Format.
--tsv- Die Ausgabe erfolgt im TSV-Format.
--no-header- Es wird keine Kopfzeile in die Ausgabe geschrieben.
-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
-obzw.--output. -o,--output-
Angabe, in welche Datei die Ausgabe geschrieben werden soll. Standardmäßig wird die Ausgabe in die Standardausgabe
stdoutgeschrieben.
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
ppnbzw.idnausgelesen. 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@.0eines 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
Ausgabe im CSV/TSV-Format
Die Ausgabe des Kommandos kann auch im Format CSV bzw. TSV erfolgen, was die Weiterverarbeitung in anderen Programmen erleichtert. Die Ausgabe der Kopfzeile lässt sich mit dem Flag --no-header ausschalten.
$ pica count -s --csv DUMP.dat.gz
records,fields,subfields
12,1035,3973
$ pica count -s --tsv DUMP.dat.gz
records fields subfields
12 1035 3973
$ pica count -s --csv --no-header DUMP.dat.gz
12,1035,3973Ausgabe in eine Datei
Die Ausgabe des Kommandos wird standardmäßig auf der Konsole ausgegeben. Diese kann mit der Option --output (bzw. -o) in eine Datei umgeleitet werden. Soll diese Datei eine neue Zeile erhalten und nicht bei jedem Aufruf überschrieben werden, kann dies mit dem Flag --append erzielt werden.
$ pica count -s --csv -o count.csv DUMP.dat.gz
$ cat count.csv
records,fields,subfields
12,1035,3973
$ pica count -s --csv --append -o count.csv DUMP.dat.gz
$ cat count.csv
records,fields,subfields
12,1035,3973
12,1035,3973Ausgabe von Einzelwerten
Soll entweder die Anzahl von Datensätzen, Feldern oder Unterfeldern ausgegeben werden, kann dies mit den Flags --records, --fields bzw. --subfields erfolgen. Diese Flags schließen sich gegenseitig aus und können nicht mit den Flags --csv, --tsv und --no-header kombiniert werden.
$ pica count -s --records DUMP.dat.gz
12
$ pica count -s --fields DUMP.dat.gz
1035
$ pica count -s --subfields DUMP.dat.gz
3973Anwendungsbeispiel
Soll die Veränderung (Anzahl Datensätze, Felder, Unterfelder) eines PICA-Abzugs über die Zeit verfolgt werden, könnte dies wie folgt erreicht werden:
$ echo "date,records,fields,subfields" > count.csv # Kopfzeile
$ pica count -s dump_20220222.dat.gz --append -o count.csv # Initialer Aufruf
$ pica count -s dump_20220223.dat.gz --append -o count.csv # Aufruf nach x Tagen
$ cat count.csv
$ records,fields,subfields
7,247,549
9,347,1022Soll auch das aktuelle Datum vor die Zeile geschrieben werden, könnten bspw. folgende Unix-Kommandos genutzt werden:
# Schreiben der Kopfzeile
$ echo "date,records,fields,subfields" > count.csv
# Aufruf am 22.02.2022
$ pica count -s --no-header --csv dump_20220222.dat.gz | \
xargs -d"\n" -I {} date +"%Y-%m-%d,{}" >> count.csv
# Aufruf am 23.02.2022
$ pica count -s --no-header --csv dump_20220223.dat.gz | \
xargs -d"\n" -I {} date +"%Y-%m-%d,{}" >> count.csv
$ cat count.csv
$ date,records,fields,subfields
2022-02-22,7,247,549
2022-02-23,9,347,1022