是否有类似lorem ipsum生成器的东西?


20

是否有类似“ lorem ipsum generator”的东西?我知道它存在于Latex中,甚至存在于LibreOffice中,但是我正在寻找终端命令。我想输入类似的内容loremipsum 10 >> file1.txt,以便给我lorem ipsum的前10个段落,每个段落的末尾都有一个LF字符,并且在每个参数之间有一条空白线。输出将被重定向到当前目录中名为file1.txt的文件。




1
当我需要它时,lipsum.com一直在那里(是的,我知道它不是本地的,只是提供了另一种方式)。
msw

Answers:


14

您可以使用perl库libtext-lorem-perl。这是一个简短的示例,请随时对其进行扩展以解析命令行参数等。

#!/usr/bin/env perl

use Text::Lorem;

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

print $paragraphs;

1
我收到此错误:在@INC中找不到Text / Lorem.pm(@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行。BEGIN失败-编译在./loremipsum.pl第3行中止。–
Frank

1
抱歉,我没有安装libtext-lorem-perl软件包。会再试一次。
Frank

5
在Debian上,该libtext-lorem-perl软件包包含简单的lorem命令,因此无需迫切需要自定义脚本。
Josef

5

发现这个在打击单行

 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 trbrew install coreutils)并替换trgtr
jdlm '17

Mac上的tr行为与Linux上的行为不同。看到这个帖子:unix.stackexchange.com/questions/141420/…–
aakoch

如果要在Mac上使用awk,则brew install gawk仅由于在Mac 上运行的linux类型而需要安装gawk 。
PrestonDocks

5

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个字符长的行。

当然,这只是一个起点,您可能需要优化输出,为此sedtr其他字符串操纵器将有所帮助。

shuffmt并且tr是的组成部分coreutils(很有可能已经安装在您的GNU / Linux发行版中)。


我修复了您的sed程序,并在管道中添加了一个头,以便您可以选择所需的行数:info -a bash -o - | shuf -n50 | sed -n 's/ */ /g;s/^ //;/./p' | fmt -w 90 | head -8
OscarJ

2

虽然从技术上讲不是Lorem Ipsum或本地二进制文件,但是Metaphorpsum上有一个API ,可以输出类似的文本,但可以用英语。我这样称呼它curl

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

更好的是,您可以在bash配置文件或脚本中将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 }'在末尾添加以获得编号的行(或任何其他符合您需要的行)。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)注意,在这种情况下,nlcat -n没有给予同样的线路编号。
ninfito


0

我通过网络上的许多lorem ipsum生成器之一制定了一个简单的脱机解决方案。在文件中存储少量文本(例如20个段落),并使以下脚本可执行:

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


0

使用Metaphorpsum API生成随机lorem ipsum文本

默认为3句话

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

BOUNS:避免卷曲进度,从输出中删除%,并添加到剪贴板以便于粘贴,同时仍显示到stdout

用法示例1:

lorem

确实,这是一个不可否认的事实。起动器是支腿。一个人无法将教授与喜怒无常的气体分开。很少有人能说出一种非赞誉的未赞美的油。

用法示例2:

lorem 1

像神rine的瑞典人来自最重要的糖浆。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.