Kalau dalam record-file ada kemungkinan
{uniq record} < {# pemenang}

tinggal pasang check:

#!/bin/bash
if [ $(sort record-file|uniq|wc -l) -lt $PEMENANG ]; then
        echo "Error # pemenang > # peserta"
        exit 1
fi
>pemenang
...

Jika ada peserta yang lebih dari satu kali dalam record-file
ya gak apa2 karena biasanya undian "makin banyak yang dikirim
makin besar kemungkinan menang, tapi tidak boleh memenangkan
lebih dari 1 hadiah" :)

Kalaupun peserta boleh memenangkan lebih dari 1 hadiah
tinggal rubah while loop ke:

c=0
while [ $c -lt 5 ] ...
c=$[$c + 1]

Steven Haryanto wrote:
> 
> At 16:18 16-12-99 +0700, you wrote:
> >#!/bin/bash
> >>pemenang
> >while [ $(sort pemenang | uniq | wc -l) -lt 5 ]; do
> >sed -e "$[ 1 + $RANDOM % 1000 ]p" -e d record-file >> pemenang
> >done

> komentar.
> 
> jika di dalam 'record-file' ada baris yang tidak unik (meski
> mungkin dalam kasus ini tidak), maka ada kemungkinan:
> - baris tersebut termuat lebih dari satu kali di file 'pemenang'
> - loop while tak kunjung berakhir (jika jumlah baris unik di
>   'record-file' tidak cukup (<5).
> 
> alternatif yang saya pikirkan:
> - pilih 5 nomor baris unik antara 1..1000
> - ambil (dalam satu kali pass) baris2 tersebut
> 
> cara ini mestinya lebih cepat.

Untuk record s/d 100.000 tidak terlalu banyak beda,
dengan asumsi min 486DX2/66
generate <# pemenang> sudah makan 1 loop:

c=0
while [ $c -lt $PEMENANG ]; do
baris="$baris $[ 1 + $RANDOM % 1000 ]"
c=$[ $c + 1 ]
done

dan untuk ambil baris tersebut dalam 1 pass ???
for p in $baris;do
        sed ...
done

Tentu saja kita ini berbicara dalam bahasa bash, no?

-- 
+---| Netscape Communicator 4.x |---| Powered by Linux 2.2.x |---+
|/v\ Agus Budy Wuysang                   MIS Department          |
| |  Phone:  +62-21-344-1316 ext 317     GSM: +62-816-1972-051   |
+--------| http://www.rad.net.id/users/personal/s/supes |--------+

--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke