Zufallszeile aus einer Datei ausgeben

Hi,

ich bin in Linux-Scripting nicht so bewandert und suche daher Hilfe:

Ich möchte per Zufall eine Zeile aus einer Datei ausgeben lassen. Bis jetzt habe ich mit RANDOM aber nur das hinbekommen:

MAXCOUNT=10
count=1
RANGE=10

number=$RANDOM
let „number %= $RANGE“
echo $number

Kann mir jemand helfen, wie es weitergeht?

cu,
cjmatsel

Hi,

mal ein planloser Schnellschuß ins Blaue:
head -6 date.txt | tail -1
„6“=variable

J~

Hi,

Hi,

Ich möchte per Zufall eine Zeile aus einer Datei ausgeben
lassen. Bis jetzt habe ich mit RANDOM aber nur das
hinbekommen:

MAXCOUNT=10
count=1
RANGE=10

number=$RANDOM
let „number %= $RANGE“
echo $number

Kann mir jemand helfen, wie es weitergeht?

Wie J~ schon andeutete, etwa so:

 file=foo.txt
 nlines=`cat $file |wc -l`
 line=`expr $RANDOM % $nlines`
 head -n$line $file |tail -n1

Einschraenkung: Du erzeugst damit keine Gleichverteilung, falls $lines kein Teiler von 32768 ist: die vorderen Zeilen werden geringfuegig haeufiger ausgegeben. Ansonsten: expr ist ziemlich synonym zu let, allerdings kein bash/zsh-builtin (-> Portablitaet). Wobei ich gerade keine sh zur Hand hab, ob die das nicht auch kann. tcsh kann’s nicht.

Und jetzt ich: wie kriege ich es hin, das die vorderen Zeilen der Datei deutlich haeufiger ausgegeben werden, als die hinteren? (Nein, die genannte Einschraenkung reicht nicht.) Der Hund hat meine Matheaufzeichnungen gefressen. Die in meinen Kopf auch.

Danke,
Gruss vom Frank.

Hallo,
ich weiß nicht ob das sinnvoll ist, aber in solchen Fällen mach ich mir immer ein pythonscript. In dem Fall:

#!/usr/bin/python
import sys,random
if len(sys.argv) 
Ich habs jetzt nicht getestet (da keine Zeit), aber es sollte funktionieren. Einfach in eine Datei mit Endung .py kopieren, chmod 755 dateiname machen und dann ausfuehren, mit der gewuenschten Datei als Parameter.
Gruß,
Ulrich

Und wieso bin ich nicht darauf gekommen?! Ouh mann, das ist ja einfach :smile:

Vielen Dank dafür…

cu,
cjmatsel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]