Re: select N random lines in a file
On Sun, Aug 22, 2004 at 02:35:14PM -0500, Lance Hoffmeyer wrote:
> Hello all,
>
> I would like to write a script that will select N number of
> random lines in a file. Any suggestions on how to do this?
>
> Lance
One way:
- Count lines in file
- Pick N line numbers
- Show file, filtering out unpicked lines
# implementation
rnd () {
perl -e 'print int(rand()*'$1'), "\n"'
}
LCT=`wc -l < "$2"`
PAT=tommy
for x in `seq 1 "$1"`; do
PAT="$PAT\\|$(rnd $LCT)"
done
sed = < "$2" | sed -n -e 'N; s/\
/ /; /^\('$PAT'\) /p' | sed 's/[^ ]* //'
Another way:
#! /usr/bin/perl
@lines = <STDIN>;
for ($i = 0; $i < $ARGV[0]; $i++) {
print $lines[ rand @lines ];
}
Endless variations...
Reply to: