Bashscript, Array

Hallöchen allerseits,

ich steht hier grade etwas auf’m Schlauch.
Ich möchte aus einer Datei eine beliebige Zeile ausgeben. Erstellung der Zufallszahl kein Problem. Nur die Augabe der zugehörigen Zeile will nicht so wie ich will. Zuerst hab ich mir ein Konstrukt mit cat und grep gebastelt, was aber ein mangelhaftes Ergebnis ausspuckte.
Hab mir gedacht, die Datei in ein Array zu packen und das Feld der Zufallszahl auszugeben. Frisch, fromm, fröhlich, frei ans Werk und
ARR=( cat datei.txt )
eingetippt. Tja, jetzt hab ich jedes Wort in einem Arrayfeld (ist halt doch nicht Perl). Kann ich da irgendwie den Fieldseperator ändern?
Lange Rede kurzer Sinn: Wie kann ich die zur Zufallszahl gehörende Zeile ausgeben?

Grüße
Martin

P.S.: Den ABS blätter ich grade selber durch…

Hi Martin,

Ich möchte aus einer Datei eine beliebige Zeile ausgeben.
Erstellung der Zufallszahl kein Problem.

Die schnellste Möglichkeit wäre sed zu benutzen.
(Hähä…des Teufels kleiner Helfer!)

 sed -ne $= datei 

liefert die Anzahl der Zeilen in der Datei, die Du natürlich zur Generierung der Zufallszahl brauchst.
Und dann kömmt ein

sed -ne $(zahl)p datei

(wieso kann ich hier keine geschweiften Klammern posten?!!)
Zum Ausprobieren an der Shell muß der reguläre Ausdruck mit Hochkomma escaped werden !

ODER in Bash-only:

zeilen\_no=0
while [1]
do
 read zeile
 if [$? -eq 1] # check EOF
 then
 break
 fi
 let zeilen\_no+=1
 zeilen[$zeilen\_no]="$line"
done 


Gruß und viel Spaß

Andreas

Hallo Andreas,

Die schnellste Möglichkeit wäre sed zu benutzen.
(Hähä…des Teufels kleiner Helfer!)

sed -ne $= datei

liefert die Anzahl der Zeilen in der Datei, die Du natürlich
zur Generierung der Zufallszahl brauchst.

Naja, die hab ich etwas anders konstruiert.
RAN=$RANDOM
let "RAN %= cat texte | wc -l"
Der Einzeiler gefällt mir aber irgendwie besser *g*

Und dann kömmt ein

sed -ne $(zahl)p datei

Genau das hat mir gefehlt.
Vielen Dank für Deine Hilfe.

Grüße
Martin