Wie erstelle ich eine zufällige .txt-Datei (menschenlesbarer Text wie ASCII) unter Linux?

43

Ich muss eine Textdatei erstellen, die zufällige Textdaten enthalten soll, die von Menschen gelesen werden können. Ich weiß, dass wir zufällige Daten verwenden /dev/urandomund /dev/randomerhalten können. Aber es ist für Menschen nicht lesbar. Ich muss eine Datei erstellen, die ein zufälliges Textformat enthält. Gibt es eine Möglichkeit, das zu tun?

Chinna
quelle
1
"Für Menschen lesbar", wie es Sinn macht? Ganze Sätze? Oder nur ein paar Wörter aus dem Wörterbuch?
Slhck
Abhängig von der Definition von "zufällig" und dem, was Sie erreichen möchten, gibt es eine Reihe von Lorem Ipsum-Generatoren, die unter Linux verfügbar oder verfügbar sind und häufig aus dem Repository Ihrer Distribution heruntergeladen werden können. Siehe Gibt es so etwas wie einen Lorem-Ipsum-Generator? , Offline lorem ipsum generator , aur.archlinux.org/packages/lorem-ipsum-generator , etc.
fixer1234

Antworten:

93

Wir können es tun, indem wir dem Befehl folgen

base64 /dev/urandom | head -c 10000000 > file.txt

Es wird eine Datei mit dem Namen file.txt mit einer Größe von 10 MB erstellt.

Chinna
quelle
1
Dadurch wird auch alle 76 Zeichen eine neue Zeile eingefügt.
wisbucky
15

Erhalte die Ausgabe von:

tr -dc A-Za-z0-9 </dev/urandom 

und leite es zu einer Datei.

Sie können den Befehl head mit -c oder -n verwenden, um die Dateigröße zu begrenzen

Beispiel zum Erzeugen einer 1kB-Datei a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
user1403360
quelle
Sie können auch [:alnum:]anstelle von verwenden A-Za-z0-9. Wenn Sie Leerzeichen und Zeilenumbrüche verwenden möchten, können Sie diese Variante tr -dc '[:alnum:] \n' ...
ausführen
4

base64scheint nur alphanumerische Zeichen plus /und auszugeben +.

Ich mag dies, um mehr "Interpunktions" -Zeichen zu erhalten, wie

'[:punct:]'
  Punctuation characters; in the 'C' locale and ASCII character
  encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

Also benutze dies:

'[:graph:]'
     Graphical characters: '[:alnum:]' and '[:punct:]'

und verwenden tr, um einfache Anführungszeichen "Backticks" und Backslashes zu entfernen \

tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]

Die -cGrößenoption headkann ein Multiplikatorsuffix haben: b 512, kB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024 usw. für T, P E, Z, Y.

Xen2050
quelle
3

Wenn Sie nicht über / dev / urandom verfügen (weil Sie möglicherweise eine GitBash-Konsole verwenden), können Sie Folgendes verwenden:

openssl rand 33000 -base64 -out dump.txt
Doughgle
quelle
3

Wenn Sie sich an echte Wörter halten möchten, verwenden Sie diesen Trick:

cat /usr/share/dict/words | sort -R | head -1024 > file.txt

Beachten Sie, dass Sie die Geometrie nicht angeben (wie viele Wörter pro Zeile, wie viele Zeilen?)

Clement
quelle