#!/usr/bin/perl use Getopt::Long; # Set default options sub usage { return " Usage: $0 [line1] [line2] [file]\n\n" . " This shows from [line1] to [line2] of a file.\n\n" . " Optional arguments: \n" . " -h Print this message\n"; } my $help; GetOptions("h" => \$help, "help" => \$help); die usage() if ($help); my $line1= shift; die "Invalid starting line \"$line1\"\n" unless ($line1 =~ /^\d+$/); my $line2= shift; die "Invalid ending line \"$line2\"\n" unless ($line2 =~ /^\d+$/); die "Ending line \"$line2\" gt starting\n" if ($line1 > $line2); if ($#ARGV < 1) { # zero or one arguments my $file= shift; die "Invalid file \"$file\"\n" unless ((-T file) or ($file ne '-')); my $diff= $line2 - $line1 + 1; exec("head -$line2 $file | tail -$diff"); } else { while (@ARGV) { my $file= shift; die "Invalid file \"$file\"\n" unless ((-T file) or ($file ne '-')); my $diff= $line2 - $line1 + 1; system("echo \'$file ::\'"); system("head -$line2 $file | tail -$diff"); } }