Ich möchte zu Testzwecken eine sehr große Datei erstellen, die eindeutige Wörter enthalten sollte (streng genommen nicht wiederholt). Es kann in GB, TB usw. Kann ich dies mit dem Terminal tun?
Ich benutze Ubuntu 16.04 (Xenial Xerus).
command-line
files
ram
Avani Badheka
quelle
quelle
Antworten:
Erstellen einer unendlichen Anzahl von Wörtern, garantiert einzigartig
Das folgende Skript generiert garantiert eindeutige Wörter aus Zeichen aus dem Alphabet. Das Problem bei jeder festen Länge von Zeichen besteht darin, dass nur begrenzte Möglichkeiten zur Verfügung stehen und die Größe Ihrer Datei begrenzt wird.
Ich habe daher
python
's verwendetpermutations
, das eine (endliche) Anzahl eindeutiger Wörter erzeugt. Nachdem wir jedoch alle Kombinationen verwendet haben, beginnen wir einfach von vorne und drucken die Wörter 2, dann 3, 4,n
mal usw., wobei jeder Wert fürn
ein neues eindeutiges Wort erzeugt. Somit haben wir einen Generator, um 100% sicher eindeutige Wörter zu produzieren.Das Skript:
Wie benutzt man
unique_generator.py
Führen Sie es mit dem folgenden Befehl aus:
Hinweis
Das Skript erzeugt einzigartige Wörter unterschiedlicher Länge. Wenn Sie möchten, können Sie die Start- oder Maximallänge einstellen, indem Sie die Zeilen ändern:
(Ersetzen Sie den Anfang des Bereichs) und ändern Sie:
in (zum Beispiel):
Im letzten Fall beträgt die Länge der Wörter maximal das 10-fache des Alphabets.
Prozess beenden
Andernfalls:
sollte den Job machen.
quelle
Verwenden Sie den folgenden Befehl, um eine große Datei mit zufälligen Wörtern zu erhalten:
Dadurch wird eine Datei mit einem eindeutigen Wort in jeder Zeile und zufälligen Textzeichenfolgen erstellt. Sie können die Größe der Datei erhöhen, indem Sie 1000 größer oder kleiner machen. Jede Zählung entspricht ungefähr einem Byte.
Um die Wörter durch Leerzeichen zu trennen, geben Sie sie einfach wieder durch
tr "\n" " "
.Dies vermeidet auch die Leistungsprobleme, die mit Schleifen auf der Shell verbunden sind.
quelle
Einfachster Einzeiler zum Erstellen zufälliger Zeichenzeilen:
oder alternativ:
Für eine bessere Einzigartigkeit können Sie Folgendes verwenden
/dev/urandom
:Beenden Sie den Befehl mit Strg + C, wenn Ihre Datei die gewünschte Größe erreicht hat
Berücksichtigen Sie auch zufällige Zeichenfolgen- / Kennwortgeneratoren :
Somit kann eine der Antworten dort angepasst werden, um dies zu haben:
Wenn Sie keine Satzzeichen und Zahlen verwenden möchten, sondern nur Buchstaben, können wir Folgendes
tr
korrigieren:Für zusätzliche Zufälligkeit können Sie die Zeichen der generierten Zeichenfolgen mit mischen
shuf
.Und so weiter und so fort. Sie können die Ausgabe sogar an einen anderen Satz von
base64
odersha256sum
Befehle übergeben, um sie noch zufälliger zu gestalten.Für diejenigen, die andere alternative Sprachen als Shell mögen, gibt es hier einen Python-Einzeiler:
quelle
$RANDOM
Variable zeigen, dann ja, aber die/dev/urandom
zufällige Wahrscheinlichkeit ist ziemlich gering, insbesondere in Kombination mit Shasum.Wenn ein begrenztes Alphabet und eine sehr vorhersehbare Ausgabe in Ordnung sind, ist die folgende wahrscheinlich die schnellste (und am meisten Golf: P) Antwort:
(wenn Wörter nur aus Zahlen bestehen dürfen) oder:
(wenn der Wunsch besteht, tatsächliche Buchstaben zu verwenden).
quelle
Sie können auch unter
/proc/sys/kernel/random/uuid
Linux UUIDs generieren , die garantiert eindeutig sein sollten:Sie können - Zeichen mit entfernen
tr -d
und dann in eine Datei umleiten:quelle