Article View: es.comp.os.linux.programacion
Article #5847Re: Duda con el RANDOM en un script
From: Claudio S.
Date: Tue, 02 Sep 2003 22:15
Date: Tue, 02 Sep 2003 22:15
61 lines
3216 bytes
3216 bytes
El Tue, 02 Sep 2003 20:39:59 +0200, cyfuss <notengo@terra.es> escribi�:
> J escribio en es.comp.os.linux.programacion el Martes, 2 de Septiembre
> de 2003 11:45...:
>
>> Por lo que entiendo lo que quieres hacer es algo parecido al
>> "fortune", yo veo dos opciones:
>
> justo, hasta ahora lo hacia con fortune, pero quiero meter mas frases
>
>> 1.- Si son pocas firmas las puedes meter en un vector y con el random
>> obtener la posici�n dentro del mismo.
>
> en un principio si son pocas, son unas 7 ademas del fortune, pero me
> gustaria ir a�adiendo mas frases y no volverme loco para incrementarla.
>
>> 2.- Si son muchas lo m�s eficaz ser�a meterlas todas en un archivo y
>> que el random te diese la linea/posici�n en la que se encuentra (as�
>> no tendr�as que cargar en memoria todas las frases cada vez que
>> llamases el programa)
>
> creo que no he dicho que soy un novato ;-). Me inclino por esta opcion,
> pero en 'Advanced Bash-Scripting Guide' no he encontrado esa opcion con
> random. seguire buscando y ya os cuento ;-)
Haberlo haylo.
Te propongo hacerlo en 4 pasos:
a) creas el archivo:
for i in `seq 200`; do fortune >> lista.txt; echo --sep-->> lista.txt;
done
b) cuentas cuantas frases tiene:
CANT=$( fgrep -c --sep-- lista.txt )
c) tomas un n�mero aleatorio:
POS=$(( $RANDOM % $CANT ))
d) escribes lo que quieres:
awk -vpos=$POS '/--sep--/ {i++}
!/--sep--/ { if (i==pos) print ;}
' lista.txt
La belleza es la expresi�n est�tica del amor.
-- Lindsay Kemp. (1939) Escen�grafo y actor brit�nico.
Despu�s solo tienes que repetir los pasos c) y d)
(o b,c y d si cambias el archivo) para tener otra fase:
$ POS=$(( $RANDOM % $CANT ))
$ awk -vpos=$POS '/--sep--/ {i++}
!/--sep--/ { if (i==pos) print ;}
' lista.txt
Como soy fil�sofo, tengo un problema para cada soluci�n.
Un saludo.
--claudio--
Technical Details
Message-ID:
<slrnbla5kd.ni8.claudio@nntp.tralari.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!ningun.sitio.es!newsReferences:
<n7uc21-2ak.ln1@local.localhost.com> <pan.2003.09.02.09.45.52.593238@telefonica.net> <1p4f21-6m2.ln1@local.localhost.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,185c07f4698c4b1 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-09-02 15:26:25 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!ningun.sitio.es!news From: "Claudio S." <claudio@ningun.sitio.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Duda con el RANDOM en un script Date: Wed, 3 Sep 2003 00:15:43 +0200 Organization: Telefonica Data Espagna Lines: 62 Message-ID: <slrnbla5kd.ni8.claudio@nntp.tralari.com> References: <n7uc21-2ak.ln1@local.localhost.com> <pan.2003.09.02.09.45.52.593238@telefonica.net> <1p4f21-6m2.ln1@local.localhost.com> NNTP-Posting-Host: 139.red-80-59-173.pooles.rima-tde.net Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: nsnmrro2-gest.nuria.telefonica-data.net 1062541583 22442 80.59.173.139 (2 Sep 2003 22:26:23 GMT) X-Complaints-To: usenet@nsnmrro2-gest.nuria.telefonica-data.net NNTP-Posting-Date: Tue, 2 Sep 2003 22:26:23 +0000 (UTC) User-Agent: slrn/0.9.7.4 (Linux)