Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add slice documentation #672

Merged
merged 3 commits into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/book/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@
- [hash](./referenz/kommandos/hash.md)
- [invalid](./referenz/kommandos/invalid.md)
- [print](./referenz/kommandos/print.md)
- [slice](./referenz/kommandos/slice.md)
- [split](./referenz/kommandos/split.md)
5 changes: 4 additions & 1 deletion docs/book/src/referenz/kommandos/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
* [count](./count.md) — Zählen von Datensätzen, Felder und Unterfeldern
* [frequency](./frequency.md) — Ermitteln einer Häufigkeitsverteilung
über ein oder mehrere Unterfelder
* [hash](./hash.md) — Erzeugt SHA-256 Hashwerte von Datensätzen
* [hash](./hash.md) — Erzeugt SHA-256-Hashwerte von Datensätzen
* [invalid](./invalid.md) — Findet ungültige Zeilen in der Eingabe
* [print](./print.md) — Gibt Datensätze in einer menschenlesbaren Form
nwagner84 marked this conversation as resolved.
Show resolved Hide resolved
aus
* [slice](./slice.md) — Ausschneiden eines zusammenhängenden
Teilbereichs aus der Eingabe
* [split](./split.md) — Teilt eine Menge an Datensätzen in Dateien fester
Größe
89 changes: 89 additions & 0 deletions docs/book/src/referenz/kommandos/slice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# slice

![stability-badge](https://img.shields.io/badge/stability-stable-green?style=flat-square)

Das `slice`-Kommando schneidet einen zusammenhängenden Teilbereich aus
der Eingabe aus.


## Beschreibung

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:


```console
$ pica slice -s --start 2 --end 5 DUMP.dat.gz -o slice.dat
$ pica count --records slice.dat
3

```


## Optionen

* `-s`, `--skip-invalid` — überspringt jene Zeilen aus der Eingabe, die
nicht dekodiert werden konnten.
* `--start` `<n>` — Startposition des Teilbereichs (Voreinstellung:
`0`).
* `--end` `<n>` — 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` `<n>` — 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.
* `-o`, `--output` — Angabe, in welche Datei die Ausgabe geschrieben
werden soll. Standardmäßig wird die Ausgabe in die Standardausgabe
`stdout` geschrieben.


## Konfiguration

<!-- TODO: Link zum allgemeinen Kapitel über die Konfigurationsdatei -->

Einige Kommandozeilen-Optionen lassen sich per Konfigurationsdatei
(`Pica.toml`) einstellen:

```toml
[slice]
skip-invalid = true
gzip = true
```

Die Werte der Kommandozeilen-Optionen haben Vorrang vor den Werten aus
der Konfiguration.


## 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:

```console
$ pica slice -s --start 2 --length 2 DUMP.dat.gz -o slice.dat
$ pica count --records slice.dat
2

```


[Gzip]: https://de.wikipedia.org/wiki/Gzip
1 change: 1 addition & 0 deletions pica-toolkit/tests/snapshot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@ fn doc_tests() {
.case("../docs/book/src/referenz/kommandos/hash.md")
.case("../docs/book/src/referenz/kommandos/invalid.md")
.case("../docs/book/src/referenz/kommandos/print.md")
.case("../docs/book/src/referenz/kommandos/slice.md")
.case("../docs/book/src/referenz/kommandos/split.md");
}
Loading