我如何使用 Linux fmt 命令格式化文本

fmt 命令是一个简单的文本格式化工具。以下是我如何使用它来格式化文本和电子邮件回复。
5 位读者喜欢这篇文章。
Typewriter keys

原始照片由 Bob Doran 通过 Flickr 提供。由 Rikki Endsley 修改。 CC BY-SA 2.0。

当我为一个项目编写文档时,我经常用纯文本编写 Readme 文件和安装说明。我不需要使用像 HTML 或 Markdown 这样的标记语言来描述一个项目是做什么的或者如何编译它。但是维护这些文档可能很麻烦。如果我需要更新我的 Readme 文本文件中的一个句子的中间部分,我需要重新格式化文本,这样我就不会在我的其他文本中间得到一个非常长或非常短的行,否则这些文本会被格式化为 75 列。有些编辑器包含一个自动重新格式化文本以填充段落的功能,但并非所有编辑器都包含。这就是 Linux fmt 命令的用武之地。

使用 Linux fmt 格式化文本

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

$ cat star.txt 
Twinkle, twinkle, little star,
how I wonder what you are.
Up above the world so high,
like a diamond in the sky.

在这个示例文件中,行的长度不同,并且它们以奇怪的方式被打断。如果您对纯文本文件进行大量更改,您可能会有类似的奇怪的换行符。要重新格式化此文本,您可以使用 fmt 命令将段落的行填充到统一的长度

$ fmt star.txt 
Twinkle, twinkle, little star, how I wonder what you are.  Up above the
world so high, like a diamond in the sky.

默认情况下,fmt 会将文本格式化为 75 列宽,但您可以使用 -w 或 --width 选项更改该宽度

$ fmt -w 60 star.txt 
Twinkle, twinkle, little star, how I wonder what you are.
Up above the world so high, like a diamond in the sky.

使用 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 选项,在单词之间使用一个空格,在句子之间使用两个空格。

接下来阅读什么
标签
photo of Jim Hall
Jim Hall 是一位开源软件倡导者和开发者,最出名的是他在 GNOME 中的可用性测试以及作为 FreeDOS 的创始人兼项目协调员。

1 条评论

一个 BSD 命令,而不是 Linux 命令。我的 Mac 上也有。但感谢您指出这一点。它看起来很有用!

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.