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

pat*_*ron 5 text-processing history historical-unix

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

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

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

小智 0

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