LoginSignup
1
0

More than 5 years have passed since last update.

標準入力の行数をページ分割する perl5スクリプト

Last updated at Posted at 2016-08-18

使いかた

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];
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0