[linux] Re: shell programmeervraagje

Paul Slootman paul+nospam op wurtel.net
Wo mei 4 15:05:27 CEST 2005


On Wed 04 May 2005, Daniel C. von Asmuth wrote:
> 
> > naam="filenaam";bla=`wc -l < $naam`; bla=$[bla-1]; head -$bla < $naam;echo "blablabla"; tail -2 $naam
> 
> In bovenstaande zou de input file maar liefst drie keer achtereen worden gelezen.

Ik zou het "gewoon" in perl doen:

-----schnippie--------------------------------------------------------
#!/usr/bin/perl

my @regelbuffer = ();

while (<>) {
    push @regelbuffer, $_;
    next if $#regelbuffer < 2;
    print shift @regelbuffer;
}
print "blablabla\n";
print @regelbuffer;
exit 0;
-----schnappie--------------------------------------------------------


Of als je memory over hebt, of weet dat de input niet zo veel is:

-----schnippie--------------------------------------------------------
#!/usr/bin/perl

my @regelbuffer = <>;
splice @regelbuffer, -2, 0, ("blablabla\n");
print @regelbuffer;
exit 0;
-----schnappie--------------------------------------------------------


Paul Slootman



More information about the Linux mailing list