🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #5847

Re: Duda con el RANDOM en un script

#5847
From: Claudio S.
Date: Tue, 02 Sep 2003 22:15
61 lines
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!news
References: <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)