Existe-t-il quelque chose comme un générateur lorem ipsum?


20

Existe-t-il quelque chose comme un « générateur lorem ipsum »? Je sais qu'elle existe dans Latex, et même dans LibreOffice, mais je cherche une commande de terminal. Je voudrais taper quelque chose comme loremipsum 10 >> file1.txtça me donnerait les 10 premiers paragraphes de lorem ipsum, chaque paragraphe se terminant par un caractère LF et 1 ligne blanche vide entre chaque paragaphe. Et la sortie serait redirigée vers un fichier appelé file1.txt dans le répertoire courant.




1
lipsum.com a toujours été là quand j'en avais besoin (oui, je sais que ce n'est pas local, je propose juste une autre façon).
msw

Réponses:


14

Vous pouvez utiliser la bibliothèque Perl libtext-lorem-perl. Voici un court exemple, n'hésitez pas à le développer pour analyser les arguments de la ligne de commande, etc.

#!/usr/bin/env perl

use Text::Lorem;

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

print $paragraphs;

1
j'ai cette erreur: impossible de localiser Text / Lorem.pm dans @INC (@INC contient: / 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.) sur ./loremipsum.pl ligne 3. BEGIN a échoué - -compilation abandonnée à ./loremipsum.pl ligne 3.
Frank

1
Désolé, je n'ai pas installé le paquet libtext-lorem-perl. Je vais réessayer.
Frank

5
Sur Debian, le libtext-lorem-perlpaquet contient une loremcommande simple , il n'y a donc aucun besoin urgent de scripts personnalisés.
Josef Kufner

5

trouvé cela chez 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

doit être limité par une autre commande ou génère du texte à l'infini


2
échoue sur OS X 10.10 avectr: Illegal byte sequence
ssc

3
Les mots aléatoires ne sont pas la vraie chose cependant.
user877329

1
@ssc Essayez d'installer GNU tr( brew install coreutils) et remplacez-le trpar gtr.
jdlm

tr sur un Mac ne se comporte pas de la même manière que sur Linux. Voir cet article: unix.stackexchange.com/questions/141420/…
aakoch

Si vous voulez awk sur Mac, vous devrez installer gawk brew install gawkjuste à cause du type de Linux qui fonctionne sur Mac.
PrestonDocks

5

Fedora et AUR d' Arch Linux ont un lorem-ipsum-generatorpackage:

lorem-ipsum-generator -p 10 -l

fera exactement ce que vous demandez.

Une autre alternative DIY:

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

Cela génère la bashdocumentation dans stdout, la redirige vers shuflaquelle sélectionne aléatoirement 50 lignes, puis sedsupprime les espaces multiples et en tête, et enfinfmt forme sur des lignes d'environ 90 caractères.

Bien sûr, ce n'est qu'un point de départ et vous devrez peut-être affiner la sortie, pour laquelle sed, tret d'autres manipulateurs de chaînes vous aideront.

shuf, fmtet en trfont partie coreutils(ce qui a de grandes chances d'être déjà installé sur votre distribution GNU / Linux).


J'ai corrigé un peu votre programme sed et ajouté une tête à la pipe pour que vous puissiez sélectionner le nombre de lignes que vous voulez:info -a bash -o - | shuf -n50 | sed -n 's/ */ /g;s/^ //;/./p' | fmt -w 90 | head -8
OscarJ

2

Bien que n'étant pas techniquement Lorem Ipsum ou un binaire local, il existe une API sur Metaphorpsum qui peut produire du texte similaire mais en anglais. Je l'appelle avec curlcomme ça:

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

Mieux encore, vous pouvez définir l'appel API comme une fonction dans votre profil bash ou des scripts comme celui-ci:

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

Vous pouvez ensuite l'utiliser de manière très similaire à votre exemple:
loremipsum paragraphs 10 >> file1.txt


1

La commande suivante m'a été utile dans de nombreuses situations:

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

Cela donne 50 lignes où les caractères non alphabétiques obtenus au hasard à partir base64 /dev/urandomont été remplacés par des espaces vides: sed 's/[^[:alpha:]]/ /g'. Chaque ligne dont l'index est un multiple de 10 est remplacée par la chaîne vide (afin de simuler la séparation des paragraphes):awk '{print(0==NR%10)?"":$1}' .

Vous pouvez ajouter | awk '{ print NR,$0 }'à la fin pour obtenir des lignes numérotées (ou toute autre qui répond à vos besoins). Un script bash exécutable lipsumqui accepte le nombre de lignes comme argument pourrait être utile.

#!/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) Votre commande awk défausse toutes les dixièmes lignes. Cela n'a pas d'importance pour le texte aléatoire, mais pour les applications moins triviales, vous voudrez peut-être utiliser awk '{print}0==NR%10{print""}'pour ajouter une ligne vierge après chaque dixième ligne. (2) Oui, awk '{ print NR,$0 }'imprimera les numéros de ligne, mais notez qu'il existe d'autres outils spécialement conçus pour cela (comme nlet  cat -n).
G-Man dit `` Réinstalle Monica '' le

Merci @ G-Man. (1) Pour les applications moins triviales que vous pourriez envisager, base64 /dev/urandom | sed '{0~10 s/^.*//;0~10!s/[^A-z]/ /g;50q0}'mais celle-ci me semble moins claire. (2) Notez que dans ce cas, nlet cat -nne donnez pas la même numérotation des lignes.
ninfito


0

J'ai fait une solution hors ligne simple au moyen de l'un des nombreux générateurs lorem ipsum sur le web. Stockez une quantité modérée de texte - disons 20 paragraphes - dans un fichier et rendez le script exécutable suivant:

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


0

Générer un texte lorem ipsum aléatoire à l'aide de l'API Metaphorpsum

Par défaut à 3 phrases

lorem() { 
  curl -s http://metaphorpsum.com/sentences/${1-3} | pbcopy
  pbpaste | grep .
}

BOUNS: évite la progression de la boucle, supprime% de la sortie et ajoute à votre presse-papiers pour faciliter le collage, tout en affichant sur stdout

Exemple d'utilisation # 1:

lorem

C'est un fait indéniable, vraiment; le démarreur est un stabilisateur. On ne peut pas séparer les professeurs des gaz de mauvaise humeur. Peu peuvent nommer une huile non élue qui n'est pas un parent méfiant.

Exemple d'utilisation # 2:

lorem 1

Le suédois psyché provient d'un sirop avant tout.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.