Gibt es eine Möglichkeit Zeilen einer Textdatei zufällig zu sortieren. Mir fällt dazu ein, eine Zufallszahl zwischen 1 und der maximalen Zahl zu bestimmen und dann mit sed weiter zu machen. Das kommt mir aber sehr umständlich vor. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Wed, 24 Nov 2010, Al Bogner schrieb:
Gibt es eine Möglichkeit Zeilen einer Textdatei zufällig zu sortieren. Mir fällt dazu ein, eine Zufallszahl zwischen 1 und der maximalen Zahl zu bestimmen und dann mit sed weiter zu machen. Das kommt mir aber sehr umständlich vor.
Wie groß ist die Datei? Wie "zufällig" soll das Ergebnis sein? Im Prinzip fällt mir hier als erstes ein, die Datei mit awk oder perl in ein Array zu lesen und dann zufällig auszugeben. Im Moment bin ich zu müde, das mal eben in perl hinzutippern. Es gibt für per auch spezielle "shuffle" Module (oder so vom Namen her), die Krams "mischen" ... -dnh -- 273: MIME Elektronische Fraktur. (Ralph Babel) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mi, 24 Nov 2010 05:26:37 CET schrieb David Haller: Hallo David,
Am Wed, 24 Nov 2010, Al Bogner schrieb:
Gibt es eine Möglichkeit Zeilen einer Textdatei zufällig zu sortieren. Mir fällt dazu ein, eine Zufallszahl zwischen 1 und der maximalen Zahl zu bestimmen und dann mit sed weiter zu machen. Das kommt mir aber sehr umständlich vor.
Wie groß ist die Datei? Wie "zufällig" soll das Ergebnis sein?
Nicht sehr groß, 500-1000 Zeilen mit Email-Adressen. Es geht um einen Newsletter, den ich vorsichtshalber nicht alfabetisch versenden will. Die Adressen liegen wegen sort -u alfabetisch vor.
Im Prinzip fällt mir hier als erstes ein, die Datei mit awk oder perl in ein Array zu lesen und dann zufällig auszugeben. Im Moment bin ich zu müde, das mal eben in perl hinzutippern. Es gibt für per auch spezielle "shuffle" Module (oder so vom Namen her), die Krams "mischen" ...
Fällt dir keine bash / sed o.ä-Variante ein. Also etwa ADRESSEN=( "x@y" "a@b" ) ZAHL="${#ADRESSEN}" RNDADDRESS="${ADRESSEN[ $(( RANDOM % ZAHL )) ]}" und das dann in eine Schleife mit sed verpacken oder so? Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Al, Am 24.11.2010 13:35, schrieb Al Bogner:
Am Wed, 24 Nov 2010, Al Bogner schrieb:
Gibt es eine Möglichkeit Zeilen einer Textdatei zufällig zu sortieren. Mir fällt dazu ein, eine Zufallszahl zwischen 1 und der maximalen Zahl zu bestimmen und dann mit sed weiter zu machen. Das kommt mir aber sehr umständlich vor.
Wie groß ist die Datei? Wie "zufällig" soll das Ergebnis sein?
Nicht sehr groß, 500-1000 Zeilen mit Email-Adressen. Es geht um einen Newsletter, den ich vorsichtshalber nicht alfabetisch versenden will. Die Adressen liegen wegen sort -u alfabetisch vor.
Im Prinzip fällt mir hier als erstes ein, die Datei mit awk oder perl in ein Array zu lesen und dann zufällig auszugeben. Im Moment bin ich zu müde, das mal eben in perl hinzutippern. Es gibt für per auch spezielle "shuffle" Module (oder so vom Namen her), die Krams "mischen" ...
Fällt dir keine bash / sed o.ä-Variante ein. Also etwa
ADRESSEN=( "x@y" "a@b" ) ZAHL="${#ADRESSEN}"
RNDADDRESS="${ADRESSEN[ $(( RANDOM % ZAHL )) ]}"
und das dann in eine Schleife mit sed verpacken oder so?
Was hälst du eigentlich von diesem Befehl: # cat emailadressen.txt | sort -R >emailadressen_zufall.txt -- Gruß Sebastian - openSUSE Member (Freespacer) Webseite/Blog: <http://www.sebastian-siebert.de> Wichtiger Hinweis zur openSUSE Mailing Liste: <http://de.opensuse.org/OpenSUSE_Mailinglisten-Netiquette> -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Sebastian, Am 24.11.2010 13:55, schrieb Sebastian Siebert:
Hallo Al,
[...]
Was hälst du eigentlich von diesem Befehl:
# cat emailadressen.txt | sort -R>emailadressen_zufall.txt
caxwf@oswlin25 [!43] cat /etc/motd |sort -R sort: invalid option -- R Try `sort --help' for more information. caxwf@oswlin25 [!44] which sort /bin/sort -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Werner Am 24.11.2010 14:02, schrieb Werner Franke:
Was hälst du eigentlich von diesem Befehl:
# cat emailadressen.txt | sort -R>emailadressen_zufall.txt
caxwf@oswlin25 [!43] cat /etc/motd |sort -R sort: invalid option -- R Try `sort --help' for more information. caxwf@oswlin25 [!44] which sort /bin/sort
Auch nicht, wenn man es so schreibt: # cat emailadressen.txt | sort --random-sort >emailadressen_zufall.txt Vielleicht gibt es Versionsunterschiede. # sort --version sort (GNU coreutils) 7.1 -- Gruß Sebastian - openSUSE Member (Freespacer) Webseite/Blog: <http://www.sebastian-siebert.de> Wichtiger Hinweis zur openSUSE Mailing Liste: <http://de.opensuse.org/OpenSUSE_Mailinglisten-Netiquette> -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Werner Franke schrieb:
Am 24.11.2010 13:55, schrieb Sebastian Siebert:
# cat emailadressen.txt | sort -R>emailadressen_zufall.txt
caxwf@oswlin25 [!43] cat /etc/motd |sort -R sort: invalid option -- R Try `sort --help' for more information.
Das "sort" von openSUSE 11.2 kennt die Option.
caxwf@oswlin25 [!44] which sort /bin/sort
"sort --version" wäre vermutlich interessanter als die Information, wo das Programm liegt ... ;-) Auf meiner Kiste: | andi@bigmachine:~/> sort --version | sort (GNU coreutils) 7.1 | Copyright © 2009 Free Software Foundation, Inc. Gruß Andi -- E-Mails an die Absender-Adresse werden nicht gelesen. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi, Sebastian, Andreas, Am 24.11.2010 14:18, schrieb Andreas Kilgus:
Werner Franke schrieb:
Am 24.11.2010 13:55, schrieb Sebastian Siebert:
# cat emailadressen.txt | sort -R>emailadressen_zufall.txt
caxwf@oswlin25 [!43] cat /etc/motd |sort -R sort: invalid option -- R Try `sort --help' for more information.
Das "sort" von openSUSE 11.2 kennt die Option.
caxwf@oswlin25 [!44] which sort /bin/sort
"sort --version" wäre vermutlich interessanter als die Information, wo das Programm liegt ... ;-)
Auf meiner Kiste:
| andi@bigmachine:~/> sort --version | sort (GNU coreutils) 7.1 | Copyright © 2009 Free Software Foundation, Inc.
Sorry, habt recht. Mein sort ist schon etwas älter (Redhat 5), da gab's random-sort noch nicht. caxwf@oswlin25 [!41] sort --version sort (GNU coreutils) 5.97 Aber das nur am Rande. Gruss Werner
Am Mi, 24 Nov 2010 14:28:06 CET schrieb Werner Franke:
Sorry, habt recht. Mein sort ist schon etwas älter (Redhat 5), da gab's random-sort noch nicht.
sort -r passt, danke, gab es aber am entfernten Rechner noch nicht. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo,
Am Wed, 24 Nov 2010, Al Bogner schrieb:
Gibt es eine Möglichkeit Zeilen einer Textdatei zufällig zu sortieren. Mir fällt dazu ein, eine Zufallszahl zwischen 1 und der maximalen Zahl zu bestimmen und dann mit sed weiter zu machen. Das kommt mir aber sehr umständlich vor.
Wie groß ist die Datei? Wie "zufällig" soll das Ergebnis sein?
Im Prinzip fällt mir hier als erstes ein, die Datei mit awk oder perl in ein Array zu lesen und dann zufällig auszugeben. Im Moment bin ich zu müde, das mal eben in perl hinzutippern. Es gibt für per auch spezielle "shuffle" Module (oder so vom Namen her), die Krams "mischen" ...
#!/usr/bin/perl -w use List::Util 'shuffle'; die "Usage: '$0 < sorted.txt > unsorted.txt'\n" if -t STDIN; @lines = <>; @shuffled = shuffle @lines; print @shuffled; Mit freundlichen Grüßen Bernd Melchers -- Archiv- und Backup-Service | fab-service@zedat.fu-berlin.de Freie Universität Berlin | Tel. ++49-30-838-55905 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
Al Bogner
-
Andreas Kilgus
-
Bernd Melchers
-
David Haller
-
Sebastian Siebert
-
Werner Franke