perl -we 'my $k = int(shift); my @a; my $l = 0; while (<>) { if ($l++ < $k) { push @a, $_ } else { if ((my $j = rand($l)) < $k) { $a[$j] = $_; } } } print @a;' 3 filename