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.