plotpipe: added --header, --colsep, and --null.
This commit is contained in:
parent
b1bb72c63b
commit
a9e198cd43
|
@ -9,7 +9,7 @@ plotpipe - Plot 1D-data or 2D-data from a pipe
|
|||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
I<datagenerator> | B<plotpipe>
|
||||
I<datagenerator> | B<plotpipe> [-H] [-0] [-C str] [-h] [-V]
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
@ -17,6 +17,48 @@ I<datagenerator> | B<plotpipe>
|
|||
B<plotpipe> is a simple wrapper for GNUPlot to simply plot 1D and 2D-data.
|
||||
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<--colsep> I<string>
|
||||
|
||||
=item B<-C> I<string>
|
||||
|
||||
Use I<string> as column separator.
|
||||
|
||||
|
||||
=item B<--header>
|
||||
|
||||
=item B<-H>
|
||||
|
||||
Ignore first line of input (it is a header).
|
||||
|
||||
|
||||
=item B<--help>
|
||||
|
||||
=item B<-h>
|
||||
|
||||
Show help.
|
||||
|
||||
|
||||
=item B<--null>
|
||||
|
||||
=item B<-0>
|
||||
|
||||
Use \0 (NUL) instead of newline (\n) as record separator.
|
||||
|
||||
|
||||
=item B<--version>
|
||||
|
||||
=item B<-V>
|
||||
|
||||
Show version
|
||||
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 EXAMPLE
|
||||
|
||||
Plot the points (1,101) .. (100,200):
|
||||
|
@ -60,8 +102,65 @@ B<gnuplot>
|
|||
|
||||
=cut
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
sub options_hash() {
|
||||
# Returns:
|
||||
# %hash = the GetOptions config
|
||||
return
|
||||
("debug|D=s" => \$opt::D,
|
||||
"version|V" => \$opt::version,
|
||||
"colsep|col-sep|C=s" => \$opt::colsep,
|
||||
"help|h" => \$opt::help,
|
||||
"null|0" => \$opt::null,
|
||||
"header|H" => \$opt::header,
|
||||
);
|
||||
}
|
||||
|
||||
sub version() {
|
||||
# Returns: N/A
|
||||
print join
|
||||
("\n",
|
||||
"GNU $Global::progname $Global::version",
|
||||
"Copyright (C) 2020 Ole Tange, http://ole.tange.dk and Free Software",
|
||||
"Foundation, Inc.",
|
||||
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>",
|
||||
"This is free software: you are free to change and redistribute it.",
|
||||
"GNU $Global::progname comes with no warranty.",
|
||||
"",
|
||||
"Web site: https://gitlab.com/ole.tange/tangetools/-/tree/master/${Global::progname}\n",
|
||||
"",
|
||||
);
|
||||
}
|
||||
|
||||
sub help() {
|
||||
# Returns: N/A
|
||||
print join
|
||||
("\n",
|
||||
"Usage:",
|
||||
"",
|
||||
"... | plotpipe [-H] [-0] [-C str]",
|
||||
"",
|
||||
"-H Ignore first line (header)",
|
||||
'-0 Records separated by \0 instead of \n',
|
||||
'-C str Columns separator',
|
||||
'-V Show version',
|
||||
"",
|
||||
"See 'man $Global::progname' for details",
|
||||
"",);
|
||||
}
|
||||
|
||||
Getopt::Long::Configure("bundling","require_order");
|
||||
my $retval = GetOptions(options_hash());
|
||||
$Global::progname = "plotpipe";
|
||||
$Global::version = 20200810;
|
||||
if($opt::version) { version(); exit 0; }
|
||||
if($opt::help) { help(); exit 0; }
|
||||
if($opt::null) { $/ = "\0"; }
|
||||
$opt::colsep ||= '\s+';
|
||||
if($opt::header) { <> }
|
||||
$line1 = <>;
|
||||
@col = split /\s+/, $line1;
|
||||
@col = split /$opt::colsep/, $line1;
|
||||
if($#col == 1) {
|
||||
# 2 col
|
||||
open GNUPLOT,"|-", q(gnuplot -p -e 'plot "/dev/stdin"') or die;
|
||||
|
|
Loading…
Reference in a new issue