“准备”计划后来怎么样了?在现代 Linux 系统上我可以使用什么来代替?

“准备”计划后来怎么样了?在现代 Linux 系统上我可以使用什么来代替?

很久以前,在 UNIX 第七版(a/k/a V7)中,有一个名为prep.它的主要用途是获取文本文件,并将它们分解为每行一个单词,以便由管道中的其他工具进一步处理。它也可以做一些其他操作,例如告诉您文件中每个单词的位置,忽略忽略列表中的特定单词,或者仅关注包含列表中特别提到的单词。很难准确解释它的作用,但这里有一个手册页从 2.9BSD 开始。它有各种各样有趣的用途——例如,构建词典、拼写检查器等等。

这个计划的寿命相当短暂。它仅存在于 V7 和几个分支中(2.9BSD 基本上是 V7 的分支)。它以前在 V6 中不存在。它已从 V8 中删除。它甚至从未进入 4.2BSD。据我所知,它在任何 Linux 发行版中都不存在(至少不以这种形式存在),在 FreeBSD 和朋友中也不存在。还有另一个程序(据我所知)首先出现在 V7 上,称为deroff,它主要用于完全不同的目的 - 但它有一个“ -w”选项,告诉它“将文件拆分为一个单词”每行”的东西,类似于prep,但没有执行任何其他功能(如单词编号、包含列表和忽略列表)。我假设出于字典构建之类的目的,deroff -w包含了prep.相对而言,它的寿命要长得多 - 但现在,似乎甚至没有deroff任何主要 Linux 发行版的打包版本,我知道它不在任何最新版本的 RHEL 中,不在 Fedora 32 中,也不在 Fedora 32 中。 Debian 10(但我很确定它实际上在不久前才出现在 Debian 中)。

为什么prep走了?真的是因为deroff -w重复了它的大部分功能吗?我认为这deroff在当前的 Linux 发行版中已经消失了,因为人们通常不再处理 [nt]roff 格式的文档,除了手册页。但是,随着这两个工具的消失,我们可以使用什么来实现“将文本文件拆分为每行一个单词”的功能呢?是否有任何现代 Linux 发行版打包的东西可以执行此功能? (如果您要回答“您可以用一个简单的脚本自己完成此操作”,我承认这可能是正确的 - 但这不是我现在正在寻找的答案,我正在寻找一个使用现代 Linux 发行版中已经存在的一些现有工具来执行此操作...)理想情况下,我想找到一些实现我链接的手册页中列出的所有功能的东西(加上“隐含”的行为)手册页中明确指定,例如不考虑标点符号作为单词的一部分,以及如何处理作为“单词”的一部分出现的数字)。 :-) 实际上,我不认为包含和排除列表特别重要,虽然我希望对单词进行编号(有时可以很方便地了解单词在文件中的位置),但它不是这么重要。在行尾处理连字符的单词是可取的。

答案1

似乎tr -s " " "\n" < file应该适用于将文件拆分为每行一个单词。

答案2

使用 Raku(以前称为 Perl6)

~$ raku -ne '.words.join("\n").put;'  < file

HTH。

https://raku.org/

相关内容