X-Git-Url: http://git.shiar.nl/barcat.git/blobdiff_plain/c4edcd34541db046c3a7b444212ed3b79ece899b..0efc8a341754dc7b8629008d0e7dbcba46d31af5:/barcat diff --git a/barcat b/barcat index fe04246..5863c4c 100755 --- a/barcat +++ b/barcat @@ -77,7 +77,10 @@ if (defined $opt{interval}) { } or warn $@, "Expect slowdown with large datasets!\n"; } -$SIG{INT} = 'IGNORE'; # continue after assumed eof +$SIG{INT} = sub { + $SIG{INT} = 'DEFAULT'; # reset for subsequent attempts + 'IGNORE' # continue after assumed eof +}; my $valmatch = qr/$opt{anchor} ( \h* -? [0-9]* \.? [0-9]+ (?: e[+-]?[0-9]+ )? |)/x; while (readline) { @@ -100,8 +103,9 @@ while (readline) { $SIG{INT} = 'DEFAULT'; sub color { - $opt{color} or return ''; - return "\e[$_[0]m"; + $opt{color} and defined $_[0] or return ''; + return "\e[$_[0]m" if defined wantarray; + $_ = color(@_) . $_ . color(0) if defined; } sub show_lines { @@ -129,7 +133,7 @@ if ($opt{markers} // 1 and $size > 0) { $barmark[ orderpos($#order * .68269) ] = '<'; $barmark[ orderpos($#order / 2) ] = '+'; # mean $barmark[ -$minval * $size ] = '|' if $minval < 0; # zero - defined and $_ = color(36).$_.color(0) for @barmark; + color(36) for @barmark; state $lastmax = $maxval; if ($maxval > $lastmax) { @@ -161,12 +165,12 @@ while ($nr <= $#lines) { $nr >= $opt{hidemax} and last if defined $opt{hidemax}; my $val = $values[$nr]; if (length $val) { - my $color = !$opt{color} ? 0 : + my $color = !$opt{color} ? undef : $val == $order[0] ? 32 : # max $val == $order[-1] ? 31 : # min 90; $val = $opt{units} ? sival($val) : sprintf "%*s", $lenval, $val; - $val = color($color).$val.color(0) if $color; + color($color) for $val; } my $line = $lines[$nr] =~ s/\n/$val/r; printf '%-*s', $len + length($val), $line; @@ -351,6 +355,11 @@ Any kind of database query with counts, preserving returned alignment: echo 'SELECT count(*),schemaname FROM pg_tables GROUP BY 2' | psql -t | barcat -u +Earthquakes worldwide magnitude 1+ in the last 24 hours: + + https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_day.csv | + column -tns, | graph -f4 -u -l80% + External datasets, like movies per year: curl https://github.com/prust/wikipedia-movie-data/raw/master/movies.json | @@ -385,6 +394,12 @@ Or the top 3 most frequent authors with statistics over all: git shortlog -sn | barcat -L3 -s +Activity of the last days (substitute date C<-v-{}d> on BSD): + + ( git log --pretty=%ci --since=30day | cut -b-10 + seq 0 30 | xargs -i date +%F -d-{}day ) | + sort | uniq -c | awk '$1--' | graph + =head1 AUTHOR Mischa POSLAWSKY