Чи є щось на зразок генератора ipsum lorem?


20

Чи є щось на кшталт ' lorem ipsum generator'? Я знаю, що він існує в Latex і навіть у LibreOffice, але я шукаю термінальну команду. Я хотів би ввести щось подібне, loremipsum 10 >> file1.txtщо дало б мені перші 10 абзаців lorem ipsum, кожен абзац закінчувався одним символом LF та 1 порожньою білою лінією між кожним парагафом. І вихід буде переспрямований на файл з назвою file1.txt у поточному каталозі.




1
lipum.com завжди був там, коли мені це було потрібно (так, я знаю, що це не локально, просто пропонують інший спосіб).
msw

Відповіді:


14

Ви можете використовувати бібліотеку perl libtext-lorem-perl. Ось короткий приклад, сміливо розширюйте його для розбору аргументів командного рядка тощо.

#!/usr/bin/env perl

use Text::Lorem;

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

print $paragraphs;

1
я отримав цю помилку: не вдається знайти Text / Lorem.pm в @INC (@INC містить: / 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.) at ./loremipsum.pl line 3. BEGIN fail- -компіляція перервана на ./loremipsum.pl рядок 3.
Френк

1
Вибачте, я не встановив пакет libtext-lorem-perl. Спробую ще раз.
Френк

5
У Debian libtext-lorem-perlпакет містить просту loremкоманду, тому немає необхідності в користувацьких скриптах.
Йозеф Куфнер

5

виявив це на 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

повинні бути обмежені іншою командою або генерувати текст нескінченно


2
виходить з ладу на OS X 10.10 зtr: Illegal byte sequence
ssc

3
Випадкові слова, однак, не реальна річ.
user877329

1
@ssc Спробуйте встановити GNU tr( brew install coreutils) та замінити trна gtr.
jdlm

tr на Mac не поводиться так, як у Linux. Дивіться цей пост: unix.stackexchange.com/questions/141420/…
aakoch

Якщо ви хочете пробудитись на Mac, вам потрібно буде встановити gawk brew install gawkсаме через тип Linux, який працює на Mac.
PrestonDocks

5

Fedora та Arch Linux мають AURlorem-ipsum-generator пакет:

lorem-ipsum-generator -p 10 -l

зробить саме те, що ви просите.

Ще одна можливість зробити сам:

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

Це виводить bashдокументацію в stdout, передає її до shufякої випадковим чином вибирає 50 рядків, потім sedвидаляє декілька та провідних пробілів і, нарешті, fmtформатує її на лінії довжиною приблизно 90 символів.

Звичайно , це всього лише відправна точка , і ви , можливо , буде потрібно уточнити вихід, для якого sed, trі інші струнні маніпулятори допоможе.

shuf, fmtі trє частинами coreutils(що має великий шанс бути вже встановленим у вашому дистрибутиві GNU / Linux).


Я трохи info -a bash -o - | shuf -n50 | sed -n 's/ */ /g;s/^ //;/./p' | fmt -w 90 | head -8
поправив

2

Хоча технічно не Lorem Ipsum або локальний двійковий файл, існує API на Metaphorpsum, який може виводити подібний текст, але англійською мовою. Я називаю це curlтак:

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

Ще краще, ви можете визначити виклик API як функцію у вашому баш-профілі або таких сценаріях:

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

Потім ви можете використовувати його дуже схожим з вашим прикладом:
loremipsum paragraphs 10 >> file1.txt


1

Наступна команда була корисною для мене у багатьох ситуаціях:

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

Це дає 50 рядків , в яких не-буквені символи , отримані випадковим чином з base64 /dev/urandomзамінені пробілами: sed 's/[^[:alpha:]]/ /g'. Кожен рядок, індекс якого кратний 10 замінюється на порожній рядок (для того , щоб імітувати поділу абзаців): awk '{print(0==NR%10)?"":$1}'.

Ви можете додати | awk '{ print NR,$0 }'в кінці, щоб отримати нумеровані рядки (або будь-які інші, що відповідають вашим потребам). Виконаний bash-скрипт, lipsumякий приймає кількість рядків як аргумент, може бути корисним.

#!/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) Ваша команда awk відкидає кожен десятий рядок. Це не має значення для випадкового тексту, але для менш тривіальних додатків ви можете використовувати awk '{print}0==NR%10{print""}'для додавання порожнього рядка після кожного десятого рядка. (2) Так, awk '{ print NR,$0 }'буде друкувати номери рядків, але зауважте, що є й інші інструменти, спеціально розроблені для цього (як nlі  cat -n).
G-Man каже: "Відновіть Моніку"

Спасибі @ G-Man. (1) Для менш тривіальних додатків ви можете розглянути, base64 /dev/urandom | sed '{0~10 s/^.*//;0~10!s/[^A-z]/ /g;50q0}'але це мені здається менш зрозумілим. (2) Зауважте, що в цьому випадку nlі cat -nне вказуйте однакову нумерацію рядків.
ninfito


0

Я зробив просте рішення в режимі офлайн за допомогою одного з багатьох генераторів lorem ipsum в Інтернеті. Зберігайте у файлі помірну кількість тексту - скажімо, 20 абзаців - і зробіть такий сценарій виконуваним:

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


0

Створіть випадковий текст lorem ipsum за допомогою API Metaphorpsum

За замовчуванням до 3 речень

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

BOUNS: уникає прогресу згортання, видаляє% з виводу та додає до буфера обміну для зручності вставки, одночасно показуючи stdout

Приклад використання №1:

lorem

Це справді незаперечний факт; стартер - аутригер. Не можна відокремлювати професорів від примхливих газів. Мало хто може назвати неочищене масло, яке не є рідним родичем.

Приклад використання №2:

lorem 1

Храм шведського походження походить із головного сиропу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.