Zufällig eine Liste beschränken

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
monox
Beiträge: 16
Registriert: 31.10.2006 23:52:55

Zufällig eine Liste beschränken

Beitrag von monox » 06.11.2006 02:11:23

Hallo

Ich habe eine Frage:
Ich habe eine bestehende Liste bzw. eine Worttabelle. Ich bin noch Anfänger in Shellscript. Ich weiss zwar, wie man aus dieser Liste zufällig eine Zeile herauspicken möchte. Nur möchte ich nun zufällig verschiedene Zeilen aus dieser Liste herauspicken.

aaa;bbb
ccc;ddd
eee;fff
ggg;hhh
iii;jjj

Einmal möchte ich, dass man sagen kann, wie viele Zeilen zufällig herauspicken kann. Also z.B. dass ich per read vom User eine 2 erhalte, und dann pickt er mir z.B. Zeile 3 und 5 heraus, auf der anderen Seite möchte ich noch eine Version machen, dass er einfach alles zufällig herauspickt, so könnte z.b. 2,4,5 am Schluss übrig sein, aber auch nur zeile 2 oder 1 oder was auch immer.
Kann mir da jemand auf die sprünge helfen?

monox
Beiträge: 16
Registriert: 31.10.2006 23:52:55

anbei

Beitrag von monox » 06.11.2006 02:25:43

im übrigen kann die Liste auch länger sein als nur diese 5 Zeilen, die Länge der Liste ist schwankend.

monox
Beiträge: 16
Registriert: 31.10.2006 23:52:55

hm?

Beitrag von monox » 06.11.2006 19:43:50

hallo

möchte mir bei dieser frage wirklich niemand helfen?

hilfreiche antworten würden mich sehr freuen.

es grüsst

monox

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 08.11.2006 10:45:46

Hallo monox,

mir sind die "Zufälle" noch nicht so klar...und mir ist noch nicht klar ob Du zufällig nach Zeilennummern oder Wörtern suchst. :wink:

Code: Alles auswählen

knoppix@9[~]$ cat test.txt
aaa;bbb
ccc;ddd
eee;fff
ggg;hhh
iii;jjj

knoppix@9[~]$ sed '/^[ccc|ggg]/!d' test.txt # -> Zeilen, die mit ccc oder ggg beginnen
ccc;ddd
ggg;hhh

knoppix@9[~]$ sed -n '2p;4p' test.txt   # -> zweite und vierte Zeile anzeigen
ccc;ddd
ggg;hhh

knoppix@9[~]$ sed '/^[a-d]/!d' test.txt   # -> nur die Zeilen übriglassen, die mit a, b, c, oder d beginnen
aaa;bbb
ccc;ddd

knoppix@9[~]$ sed -n '1p;$p' test.txt   #  -> die erste und letzte Zeile anzeigen
aaa;bbb
iii;jjj

knoppix@9[~]$ sed -n '4,$p' test.txt   # -> die vierte bis zur letzten Zeile anzeigen
ggg;hhh
iii;jjj

knoppix@9[~]$ grep ^ccc test.txt   # -> die Zeilen anzeigen, die mit ccc beginnen
ccc;ddd
http://de.linwiki.org/index.php/Linuxfi ... -Werkzeuge und dann
Reguläre Ausdrücke, grep, sed und awk

Hilft Dir das weiter, oder in welcher Richtung suchst Du?

Gruß fuzzy

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 08.11.2006 12:40:35

Hi,

ich haette eine andere Idee.
Wenn du die Funktion rand aufrufst, das Ergebnis mit der Anzahl der Elemente multiplizierst, und anschliessend rundest, sollte das das sein was du suchst, oder?
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Antworten