Re: Tee für die letzten N Zeilen
hi,
erstmal Kaffee.
Am 22. März 2014 16:15 schrieb Michael Schuerig <michael.lists@schuerig.de>:
>
> Ich möchte in einer Pipe die Ausgabe der vorhergehenden Stufe in eine
> Datei schreiben, wobei ich aber immer nur die jeweils letzten N Zeilen
> behalten will.
>
> Den ersten Teil kann tee natürlich. Für den zweiten habe ich kein
> Werkzeug gefunden. Ich habe mir ein Skript gebastelt (s.u.), das die
> gewünschte Funktionalität durch rotierte Ausgabedateien angenähert
> erreicht. Allerdings ist es sprachbedingt(?) langsam, ein Rohr mit viel
> und schnellem Durchfluss würde dadurch möglicherweise gebremst.
>
> Falls die Performance jemals ein Problem werden sollte könnte ich die
> Funktionalität dann in Perl/Python/Ruby/C implementieren. Aber
> vielleicht gibt es das ja schon.
>
> Michael
>
>
> #! /bin/bash -e
>
> out=
> lines=10000
> keep=2
>
> usage() {
> echo "$0 [ -l <lines> | --lines <lines> ] [ -k <chunks> | --keep
> <chunks> ] <output file>"
> }
>
> while (( $# > 1 )); do
> case "$1" in
> --lines|-l)
> lines="$2"
> shift 2
> ;;
> --keep|-k)
> keep="$2"
> shift 2
> ;;
> --help|-h)
> usage
> exit 0
> ;;
> *)
> usage
> exit 1
> ;;
> esac
> done
>
> out="$1"
>
> if [[ -z $out ]] || [[ -z $lines ]] || [[ -z $keep ]]; then
> usage
> exit 1
> fi
>
> exec 4> "$out"
>
> i=0
> while read l; do
> (( i += 1 ))
> echo "$l" >&4
> echo "$l"
> if (( $i >= $n )); then
> savelog -q -c "$k" -l "$out"
> i=0
> fi
> done
>
> exec 4>&-
>
> exit 0
>
>
> --
> Michael Schuerig
> mailto:michael@schuerig.de
> http://www.schuerig.de/michael/
>
>
> --
> Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-REQUEST@lists.debian.org
> mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)
> Archive: [🔎] 3668868.bWtkN5jk8l@fuchsia">https://lists.debian.org/[🔎] 3668868.bWtkN5jk8l@fuchsia
>
Reply to: