使いかた
command-too-long-output | perl pager.pl 3 1
動作確認
$ a=0;while [ $a -lt 20 ]; do echo "line $a"; a=$(($a+1)); done | perl pager.pl 3 1
line 0
line 1
line 2
$ a=0;while [ $a -lt 20 ]; do echo "line $a"; a=$(($a+1)); done | perl pager.pl 3 2
line 3
line 4
line 5
$ a=0;while [ $a -lt 20 ]; do echo "line $a"; a=$(($a+1)); done | perl pager.pl 3 7
line 18
line 19
第一引数 が 1ページあたりの件数
第二引数 が ページ数
スクリプト
pager.pl
use strict;
use warnings;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
my ($count, $page) = @ARGV;
$count ||= 0;
$page ||= 1;
my @lines = ();
push @lines, $_ for <STDIN>;
my $start = $count * ($page - 1);
my $end = $start + $count;
if (@lines - 0 < $end) {
$end = @lines - 0;
}
print for @lines[$start...$end-1];