我是如何使用 Linux fmt 命令来格式化文本
创始人
2024-03-02 11:54:55
0

fmt 命令是一个简单的文本格式化程序。我将在这里展示如何使用它来格式化文本和邮件回复。

当我为项目编写文档时,我经常以纯文本的形式编写自述文件和安装说明。我不需要使用 HTML 或者 Markdown 之类的标记语言来描述项目的功能或如何编译它。但是维护这样的文档可能会很痛苦。如果我需要更新我的 Readme 文件中的一个句子的中间位置,我需要重新格式化文本,以避免在我的其它文本中间出现一个很长或很短的行,而其它的行的格式是整整齐齐的 75 列。一些编辑器包含可以自动重新格式化文本以填充段落的功能,但并非所有的编辑器都这样做。这就是 Linux fmt 命令的用武之地。

使用 Linux fmt 命令格式化文本

fmt 命令是一个简单的文本格式化程序;它收集单词并填充段落,但不应用任何其它文本样式,例如斜体或粗体。这一切都是纯文本。使用 fmt 命令,你可以快速调整文本,使其更易于阅读。让我们从这个熟悉的示例文本开始:

$ cat trek.txt 
Space: the final
frontier. These are the voyages
of the starship Enterprise. Its
continuing mission: to explore
strange new worlds. To
seek out new life and new
civilizations. To boldly go
where no one has gone before!

在这个实例文件中,每行都有不同的长度,并且它们以一种奇怪的方式换行。如果你对纯文本文件进行大量更改,你可以会遇到类似的奇怪的换行。要重新格式化此文本,你可以使用 fmt 命令将段落的行填充为统一长度:

$ fmt trek.txt 
Space: the final frontier. These are the voyages of the starship
Enterprise. Its continuing mission: to explore strange new worlds. To
seek out new life and new civilizations. To boldly go where no one has
gone before!

默认情况下,fmt 会将文本格式化为 75 的列宽大小,但你可以使用 -w--width 选项进行更改:

$ fmt -w 60 trek.txt 
Space: the final frontier. These are the voyages of
the starship Enterprise. Its continuing mission: to
explore strange new worlds. To seek out new life and new
civilizations. To boldly go where no one has gone before!

使用 Linux fmt 命令格式化电子邮件回复

我加入了一个邮件列表,这里更喜欢纯文本电子邮件,这使得在列表服务器上归档电子邮件变得更加容易。但现实是并非每个人都以纯文本形式发送电子邮件。有时候,当我以纯文本形式回复这些电子邮件时,我的电子邮件客户端会将整个段落放在一行中。这使得在电子邮件中“引用”回复变得困难。

这是一个简单的例子。当我以纯文本形式回复电子邮件时,我的电子邮件客户端通过在每行前添加 > 字符来“引用”对方的电子邮件。对于一条短消息,可能如下所示:

> I like the idea of the interim development builds.

没有正确“换行”的长行将无法在我的纯文本电子邮件回复中正确显示,因为它只是前面带有 > 字符的长行,如下所示:

> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.

为了解决这个问题,我打开了一个终端并将引用的文本复制并粘贴到一个新文件中。然后我使用 -p--prefix 选项来告诉 fmt 在每一行之前使用什么字符作为“前缀”。

$ cat > email.txt
> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.
^D
$ fmt -p '>' email.txt
> I like the idea of the interim development builds. This should be a
> great way to test new changes that everyone can experiment with.

fmt 命令是一个非常简单的文本格式化程序,但它可以做很多有用的事情,可以帮助以纯文本形式编写和更新文档。要了解其它选项,例如 -c--crown-margin 以匹配段落前两行缩进,例如项目列表。还可以尝试使用 -t 或者 --tagged-paragraph 来保留段落中第一行的缩进,就像缩进的段落一样。-u--uniform-spacing 选项在单词之间使用一个空格,在句子之间使用两个空格。


via: https://opensource.com/article/22/7/fmt-trivial-text-formatter

作者:Jim Hall 选题:lkxed 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不同尝试后仍然出现“Fat...
这个错误通常发生在PHP中缺少intl扩展的情况下。我们可以通过以...
2025-01-08 09:30:52
BufferSource是...
Buffer Source仅按照指定的像素格式读取输入,不会对像素...
2024-12-24 12:30:35
部分范围以文本格式化
在Python中,可以使用字符串的切片操作来实现部分范围的文本格式...
2024-12-24 02:32:24
binfmt_misc内核...
在Linux系统中,binfmt_misc是一个内核模块,它允许用...
2024-12-18 03:30:27
保留现有的代码以适应任意的...
要保留现有的代码以适应任意的scalafmt设置,可以使用以下解决...
2024-11-24 16:31:26
AV_PIX_FMT_NV...
AV_PIX_FMT_NV12是YUV420格式的一种。它将色度和...
2024-11-13 09:31:42

热门资讯

PHP最佳实践(译) 简介PHP是一门复杂的语言,经过多年折腾,使其不同版本之间高度不一致,有时还有些bug。 每个版本都...
值得收藏的 27 个机器学习的... 机器学习 ( Machine Learning ) 有很多方面,当我开始研究学习它时,我发现了各种各...
硬核观察 #885 苹果 AR... 苹果 AR 眼镜被无限期推迟据报道,由于技术上的挑战,苹果公司已经无限期推迟了其轻型增强现实(AR)...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
为什么计量 IT 的生产力如此... 在某些行业里,人们可以根据一些测量标准判定一个人的生产力。比如,如果你是一个零件制造商,可以通过一个...
8个有趣的Linux提示与技巧... 我们时不时给你带来关于Linux的提示与技巧。和这个系列保持一致,这里有8个我们从读者收到最有趣的提...
8 个提升你的隐私防护的开源密... 使用一些顶级开源密码管理器,确保你的登录凭证安全无虞。密码管理器是一项非常有用的实用程序。在你想寻找...
2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...