Есть ли что-то вроде генератора lorem ipsum?


20

Есть ли что-то вроде « Lorem Ipsum Generator »? Я знаю, что он существует в Latex и даже в LibreOffice, но я ищу терминальную команду. Я хотел бы напечатать что-нибудь подобное loremipsum 10 >> file1.txt, чтобы получить первые 10 абзацев lorem ipsum, каждый абзац заканчивался одним символом LF и 1 пустой белой строкой между каждым парагафом. И вывод будет перенаправлен в файл с именем file1.txt в текущем каталоге.




1
lipsum.com всегда был там, когда мне это было нужно (да, я знаю, что это не локально, просто предлагая другой способ).
MSS

Ответы:


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.) в строке ./loremipsum.pl 3. НАЧАЛО сбой- -компиляция прервана в ./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

Если вы хотите использовать awk на Mac, вам нужно установить gawk brew install gawkтолько из-за типа Linux, который работает на Mac.
PrestonDocks

5

AUR Fedora и Arch Linux имеют lorem-ipsum-generatorпакет:

lorem-ipsum-generator -p 10 -l

будет делать именно то, что вы просите.

Еще одна альтернатива DIY:

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

Это выводит bashдокументацию в стандартный вывод, направляет ее в shufпроизвольно выбранные 50 строк, затем sedудаляет несколько пробелов и начальных пробелов и, наконец, fmtформатирует ее в строки длиной около 90 символов.

Конечно , это всего лишь отправная точка , и вы , возможно , потребуется уточнить выход, для которого sed, trи другие струнные манипуляторы поможет.

shuf, fmtИ trявляются частями coreutils(который имеет большой шанс быть уже установлен на вашем дистрибутиве GNU / Linux).


Я немного исправил вашу программу sed и добавил головку в канал, чтобы вы могли выбрать info -a bash -o - | shuf -n50 | sed -n 's/ */ /g;s/^ //;/./p' | fmt -w 90 | head -8
желаемое

2

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

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

Более того, вы можете определить вызов API как функцию в вашем профиле bash или в сценариях следующим образом:

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 }'в конце, чтобы получить пронумерованные строки (или любые другие, которые соответствуют вашим потребностям). Может lipsumбыть полезен исполняемый bash-скрипт, который принимает количество строк в качестве аргумента.

#!/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 с помощью Metaphorpsum API

По умолчанию до 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.