Gibt es so etwas wie einen Lorem-Ipsum-Generator?


20

Gibt es so etwas wie einen Lorem - Ipsum- Generator? Ich weiß, dass es in Latex und sogar in LibreOffice existiert, aber ich suche nach einem Terminalbefehl. Ich würde gerne so etwas loremipsum 10 >> file1.txtschreiben, dass ich die ersten 10 Absätze von lorem ipsum bekomme, wobei jeder Absatz mit einem LF-Zeichen und einer leeren weißen Linie zwischen jedem Paragraf endet. Die Ausgabe wird dann in eine Datei mit dem Namen file1.txt im aktuellen Verzeichnis umgeleitet.



2
Versuchen Sie Folgendes
Kyle Strand

lipsum.com war immer da, wenn ich es brauchte (ja, ich weiß, dass es nicht lokal ist, sondern nur einen anderen Weg bietet).
msw

Antworten:


14

Sie können die Perl-Bibliothek verwenden libtext-lorem-perl. Hier ein kurzes Beispiel, zögern Sie nicht, es zu erweitern, um Befehlszeilenargumente usw. zu analysieren.

#!/usr/bin/env perl

use Text::Lorem;

my $text = Text::Lorem->new();
$paragraphs = $text->paragraphs(10);

print $paragraphs;

1
Ich habe folgende Fehlermeldung erhalten: Text / Lorem.pm kann in @INC nicht gefunden werden (@INC enthält: / etc / perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 / usr / lib / perl5 / usr / share / perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 / usr / local / lib / site_perl.) um ./loremipsum.pl Zeile 3. BEGIN failed- -Zusammenstellung um ./loremipsum.pl Zeile 3 abgebrochen.
Frank

1
Entschuldigung, ich habe das Paket libtext-lorem-perl nicht installiert. Werde es nochmal versuchen.
Frank

5
Unter Debian libtext-lorem-perlenthält das Paket einfache loremBefehle, so dass keine benutzerdefinierten Skripte dringend benötigt werden.
Josef Kufner

5

fand dies bei Bash One-Liners

 tr -dc a-z1-4 </dev/urandom | tr 1-2 ' \n' | awk 'length==0 || length>50' | tr 3-4 ' ' | sed 's/^ *//' | cat -s | sed 's/ / /g' |fmt

muss durch einen anderen Befehl eingeschränkt werden oder generiert unbegrenzt Text


2
schlägt unter OS X 10.10 mittr: Illegal byte sequence
ssc

3
Zufällige Wörter sind jedoch nicht die Realität.
user877329

1
@ssc Installieren Sie GNU tr( brew install coreutils) und ersetzen Sie es trdurch gtr.
jdlm

tr auf einem Mac verhält sich nicht wie unter Linux. Siehe diesen Beitrag: unix.stackexchange.com/questions/141420/…
aakoch

Wenn Sie auf einem Mac awk möchten, müssen Sie gawk brew install gawknur wegen der Art von Linux installieren , die auf einem Mac ausgeführt wird.
PrestonDocks

5

Fedora und Arch Linux's AUR haben ein lorem-ipsum-generatorPaket:

lorem-ipsum-generator -p 10 -l

wird genau das tun, wonach Sie fragen.

Eine weitere DIY-Alternative:

info bash -o -|shuf -n50|sed 's/  */ /g;s/^ //'|fmt -w 90

Dadurch wird die bashDokumentation in stdout ausgegeben, shufper Pipeline an 50 Zeilen übergeben, sedmehrere und führende Leerzeichen entfernt und schließlich fmtin Zeilen mit einer Länge von ca. 90 Zeichen formatiert.

Natürlich ist dies nur ein Ausgangspunkt , und Sie können die Ausgabe verfeinern müssen, für die sed, trund andere String - Manipulatoren helfen.

shuf, fmtund trsind Teile von coreutils(die mit großer Wahrscheinlichkeit bereits auf Ihrer GNU / Linux-Distribution installiert sind).


Ich habe Ihr sed-Programm ein wenig verbessert und der Pipe einen Kopf hinzugefügt, damit Sie die Anzahl der Zeilen auswählen können, die Sie möchten:info -a bash -o - | shuf -n50 | sed -n 's/ */ /g;s/^ //;/./p' | fmt -w 90 | head -8
OscarJ

2

Obwohl es sich technisch gesehen nicht um Lorem Ipsum oder eine lokale Binärdatei handelt, gibt es auf Metaphorpsum eine API, die ähnlichen Text ausgeben kann, jedoch in Englisch. Ich nenne es curlso:

  • curl http://metaphorpsum.com/sentences/3
  • curl http://metaphorpsum.com/paragraphs/20

Besser noch, Sie können den API-Aufruf als eine Funktion in Ihrem Bash-Profil oder in Skripten wie folgt definieren:

loremipsum () {
if [ "${1}" = "" ] || [ "${2}" = "" ]; then
echo "Usage: loremipsum [paragraphs, sentences] [integer]"
else
curl -s http://metaphorpsum.com/"${1}"/"${2}" && printf "\n"
fi
}

Sie können es dann ganz ähnlich wie in Ihrem Beispiel verwenden:
loremipsum paragraphs 10 >> file1.txt


1

Der folgende Befehl hat sich in vielen Situationen als nützlich erwiesen:

base64 /dev/urandom | awk '{print(0==NR%10)?"":$1}' | sed 's/[^[:alpha:]]/ /g' | head -50

Dies gibt 50 Zeilen , in denen nicht-alphabetische Zeichen zufällig erhalten von base64 /dev/urandomdurch Leerzeichen ersetzt worden sind: sed 's/[^[:alpha:]]/ /g'. Jede Zeile , deren Index ist ein Vielfaches von 10 durch die leere Zeichenkette ersetzt wird (um zum Simulieren Trennung der Absätze): awk '{print(0==NR%10)?"":$1}'.

Sie können | awk '{ print NR,$0 }'am Ende hinzufügen , um nummerierte Zeilen zu erhalten (oder jede andere, die Ihren Anforderungen entspricht). Ein ausführbares Bash-Skript lipsum, das die Anzahl der Zeilen als Argument akzeptiert, könnte nützlich sein.

#!/usr/bin/bash
base64 /dev/urandom | awk '{print(0==NR%10)?"":$1}' | sed 's/[^[:alpha:]]/ /g' | head -$1 | awk '{ print NR,$0 }'

lipsum 100 > output_file


(1) Ihr awk-Befehl verwirft jede zehnte Zeile. Es spielt keine Rolle für zufälligen Text, aber für weniger einfache Anwendungen möchten Sie möglicherweise awk '{print}0==NR%10{print""}'nach jeder zehnten Zeile eine Leerzeile einfügen. (2) Ja, awk '{ print NR,$0 }'Zeilennummern werden gedruckt, es gibt jedoch auch andere Tools, die speziell dafür entwickelt wurden (wie nlund  cat -n).
G-Man sagt, dass Monica

Vielen Dank @ G-Man. (1) Für weniger einfache Anwendungen, die Sie vielleicht in Betracht ziehen base64 /dev/urandom | sed '{0~10 s/^.*//;0~10!s/[^A-z]/ /g;50q0}', scheint mir diese weniger klar zu sein. (2) Beachten Sie, dass in diesem Fall nlund cat -ngeben Sie nicht die gleiche Zeilennummerierung.
Ninfito


0

Ich habe eine einfache Offline-Lösung mit Hilfe eines der vielen Lorem-Ipsum-Generatoren im Internet erstellt. Speichern Sie eine moderate Menge an Text - sagen wir 20 Absätze - in einer Datei und machen Sie das folgende Skript ausführbar:

#!/bin/bash
file=$HOME/lib/text/lorem_ipsum && cat $file

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.