'field|f=s' => sub {
eval {
local $_ = $_[1];
- $opt{anchor} = /\A[0-9]+\z/ ? qr/(?:\S*\h+){$_}\K/ : qr/$_/;
+ s/\A[0-9]+\z/(?:\\S*\\h+){$_}\\K/;
+ s/\A[+]([0-9]*)\z/(?:\\d+\\D+\\b){$1}\\K \\s* (?=\\d)/;
+ $opt{anchor} = qr/$_/;
} or die $@ =~ s/(?:\ at\ \N+)?\Z/ for option $_[0]/r;
},
'human-readable|H!',
Options:
-a, --[no-]ascii Restrict user interface to ASCII characters
-C, --[no-]color Force colored output of values and bar markers
- -f, --field=(N|REGEXP) Compare values after a given number of whitespace
+ -f, --field=([+]N|REGEXP)
+ Compare values after a given number of whitespace
separators
--header Prepend a chart axis with minimum and maximum
values labeled
Can also be disabled by setting I<-M>
or the I<NO_COLOR> environment variable.
-=item -f, --field=(<number> | <regexp>)
+=item -f, --field=([+]<number> | <regexp>)
Compare values after a given number of whitespace separators,
or matching a regular expression.
(such as I<-f:> if preceded by colons),
or capture the numbers itself,
for example I<-f'(\d+)'> for the first digits anywhere.
+A shorthand for this is I<+0>, or I<+N> to find the Nth number.
=item --header
du -d0 -b * | barcat -H
+Same from formatted results, selecting the first numeric value:
+
+ tree -s --noreport | barcat -H -f+0
+
Memory usage of user processes with long names truncated:
ps xo rss,pid,cmd | barcat -l40
xmlstarlet sel -t -m '*/*' -v wb:date -o ' ' -v wb:value -n |
barcat -f1 -H
+Population and other information for all countries:
+
+ curl http://download.geonames.org/export/dump/countryInfo.txt |
+ grep -v '^#\s' | column -tns$'\t' | barcat -f+2 -u -l150 -s
+
And of course various Git statistics, such commit count by year:
git log --pretty=%ci | cut -b-4 | uniq -c | barcat