Существует ли что-то вроде генератора lorem ipsum?

Вопрос или проблема

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

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

#!/usr/bin/env perl

use Text::Lorem;

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

print $paragraphs;

нашел это на 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

должен быть ограничен другой командой или генерирует текст бесконечно

Хотя это технически не Lorem Ipsum и не локальный бинарник, есть API на Metaphorpsum, который может выводить подобный текст, но на английском. Я вызываю его с помощью 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}"https://unix.stackexchange.com/"${2}" && printf "\n"
fi
}

Вы можете использовать это очень похожим образом на ваш пример:
loremipsum paragraphs 10 >> file1.txt

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

lorem-ipsum-generator -p 10 -l

сделает именно то, что вы запрашиваете.

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

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).

Генерация случайного текста lorem ipsum с использованием API Metaphorpsum

По умолчанию 3 предложения

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

БОНУС: избегает прогресса curl, удаляет % из вывода и добавляет в ваш буфер обмена для удобства вставки, пока все еще отображается в stdout

Пример использования #1:

lorem

Это действительно неоспоримый факт; стартер – это ваучер. Нельзя отделить профессоров от капризных газов. Мало кто может назвать недооцененное масло, которое не является подозрительным родственником.

Пример использования #2:

lorem 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

Использование случайных английских слов из вашего локального словаря

Если вам больше нравятся английские слова, чем латинские, это ответ вдохновил меня взять случайные слова из /usr/share/dict/american-english, который, как я думаю, поставляется предустановленным в Ubuntu 24.04 через пакет wamerican, и создать 10 миллионов случайных предложений из 4 слов:

time head -n10000000 <(
  while true; do
    grep -v "'" /usr/share/dict/american-english |
    shuf |
    paste -d ' ' $(printf "%4s" | sed 's/ /- /g') |
    sed -e 's/^\(.\)/\U\1/;s/$/./'
  done
) > lorem.txt

Некоторые образцы строк:

Реформация гуманитарных ланианков пятно.
Деньги телеграфные боцманы красивы.
Предварительные интернетные ведра.
Барабан игровой петушонок богохульствует.

Время генерации: 8 секунд. Размер файла: 355 МБ.

Некоторые заметки:

Связано:

lorem из пакета Ubuntu libtext-lorem-perl (CLI для Text::Lorem)

Это оболочка командной строки для Text::Lorem, которая была упомянута Марко.

Установка:

sudo apt install libtext-lorem-perl

Использование:

lorem

Пример вывода, случайно сгенерированного каждый раз:

Numquam sed impedit perspiciatis consequatur voluptatum et voluptas occaecati. Rem doloribus similique dolorem placeat adipisci. Occaecati atque doloribus ea qui est aliquam. Id facilis molestiae sunt.

Опции:

-p похоже на вызов lorem n раз (n абзацев), например:

lorem -p 2

дает что-то вроде:

Repellendus temporibus ad hic saepe autem. Et enim omnis qui id et sunt. Animi omnis nam aut ipsam facilis.Nam et cum fugit minus natus rerum. Nemo voluptas qui suscipit. Deserunt dolor a soluta magnam. Tempora saepe eaque porro voluptas aut. Eum aut ipsam id. Rerum magnam aut totam illo.

Меня беспокоит, что точка . после каждого абзаца не получает пробела, например, здесь мы увидели facilis.Nam.

-w устанавливает количество слов, например:

lorem -w 1

дает что-то вроде:

cupiditate

Но если вы запрашиваете более одного слова, он не ставит пробелы между ними, что делает опцию довольно бесполезной для значений больше одного.

Наконец, -s устанавливает количество предложений, т.е. вещи с точкой, например:

lorem -s 1

может дать:

Ab cumque sit ipsum eos accusantium.

и снова нет пробела после каждой точки. Что не так с этим инструментом и разделением!

С точки зрения производительности:

\time -v lorem -p 1000000 > lorem.txt

дает:

        User time (seconds): 14.74                                                             
        Maximum resident set size (kbytes): 336256                                             

чтобы получить 193 МБ, что можно использовать, но это не удивительно. Инструмент, похоже, генерирует весь текст в памяти, а затем сбрасывает все сразу в stdout, а не потоком, помаленьку. Позор.

Проверено на Ubuntu 24.04, libtext-lorem-perl 0.34-3.

Нашел две другие библиотеки python для использования

Я сделал простое автономное решение с помощью одного из многих генераторов lorem ipsum в интернете. Сохраните умеренное количество текста – скажем, 20 абзацев – в файл и сделайте следующий скрипт исполняемым:

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

Веб-сайт генератора Lorem Ipsum :
http://lorem-ipsum.perbang.dk/
(вы можете выбрать количество абзацев и т.д.)

Ответ или решение

Вопрос о наличии генераторов текста наподобие "lorem ipsum" в терминале, безусловно, актуален для многих разработчиков и дизайнеров. Такие инструменты позволяют быстро создавать заполнители текстовых блоков для тестирования веб-сайтов, приложений и других проектов. В данной статье мы рассмотрим, как можно использовать различные методы для генерации текста в командной строке.

1. Использование Perl библиотеки Text::Lorem

Один из простейших способов получения lorem ipsum текста в терминале — использовать Perl библиотеку Text::Lorem. С помощью этой библиотеки можно создать скрипт, который генерирует нужное количество абзацев. Пример кода:

#!/usr/bin/env perl

use Text::Lorem;

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

print $paragraphs;

Этот скрипт сгенерирует 10 абзацев текста и выведет его в стандартный вывод. Вы можете перенаправить его в файл с помощью:

perl your_script.pl > file1.txt

2. Использование API Metaphorpsum

Если вам не подходит решение на Perl, можно воспользоваться веб-API, таким как Metaphorpsum. Это API генерирует текст на английском языке по запросу. Для получения нужного количества абзацев, используйте curl:

curl http://metaphorpsum.com/paragraphs/10 >> file1.txt

Для упрощения использования вы можете создать функцию в вашем bash-профиле:

loremipsum () {
    if [ -z "$1" ]; then
        echo "Usage: loremipsum [paragraphs] [integer]"
        return 1
    fi
    curl -s http://metaphorpsum.com/paragraphs/$1 && printf "\n"
}

Теперь вы можете вызвать loremipsum 10 >> file1.txt, и текст будет записан в файл.

3. Генераторы в дистрибутивах Linux

Для пользователей дистрибутивов Linux, таких как Fedora и Arch Linux, доступны пакеты, которые будут делать именно то, что вам нужно. Например, в Arch Linux вы можете установить lorem-ipsum-generator и использовать следующую команду:

lorem-ipsum-generator -p 10 -l

Это сгенерирует 10 абзацев текста по вашему запросу.

4. Альтернативные методы

Если вы хотите сгенерировать текст с помощью командных утилит, вы можете использовать такой подход:

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

Этот код берет случайные байты из /dev/urandom, удаляет все неалфавитные символы и выводит 50 строк текста.

Заключение

Генерация текстов, наподобие "lorem ipsum", в командной строке может быть реализована различными способами: от простых скриптов на Perl до использования удобных API и специализированных пакетов. Выбор подхода во многом зависит от ваших предпочтений и особенностей работы с системой. Генераторы lorem ipsum — это очень полезный инструмент для веб-разработчиков, позволяющий эффективно заполнять пространство, протестировать макеты и визуальные элементы интерфейса, не отвлекаясь на создание оригинального текста.

Оцените материал
Добавить комментарий

Капча загружается...