How to print last <n> pages of a file?

Peter Scott pjs at euclid.jpl.nasa.gov
Fri May 3 10:24:57 AEST 1991


In article <1991May2.182639.21845 at iwarp.intel.com>, merlyn at iwarp.intel.com (Randal L. Schwartz) writes:
> In article <1991May2.162355.779 at elroy.jpl.nasa.gov>, pjs at euclid (Peter Scott) writes:
> | How can I print the last <n> pages of a text file?  Said file has form
> | feeds at random places, so "tail -132 file | lpr" won't work.  Now, I tried
> | "pr file | tail -132" but that includes the 5-line headers and footers
> | that I don't want and don't get with "lpr file".  So I tried 
> | "pr -t file | tail -132" but the -t option turns off page filling so the
> | form feeds aren't expanded :-(.
> | 
> | Any suggestions?  SunOS 4.1 over here.
> 
> A quick Perl solution:
> 
> ################################################## snip
> #!/usr/bin/perl
> 
> $tail = shift || 1;
> 	## first arg is number of pages to tail (default is 1)
> 	## rest of args are processed like "cat"
> 
> $/ = "\f"; # input separator set to form-feed
> while (<>) {
> 	push(@q,$_);
> 	shift(@q) while @q > $tail; # keep only $tail pages in queue
> }
> print @q;
> exit 0;
> ################################################## snip

Hmm, nice, but tell me, does it work when a page *doesn't* have a form
feed to separate it?  I.e., there's more than 66 lines between FF's?

BTW, I should have said "<n>*66" instead of "132" in my posting.  Obviously
my immediate need is to print 2 pages...

-- 
This is news.  This is your       |    Peter Scott, NASA/JPL/Caltech
brain on news.  Any questions?    |    (pjs at euclid.jpl.nasa.gov)



More information about the Comp.unix.questions mailing list