如何使用 Linux fmt 命令格式化文本
fmt 命令是一个简单的文本格式化程序。以下是我如何使用它来格式化文本和电子邮件回复。
当我为项目编写文档时,我经常以纯文本形式编写自述文件和安装说明。我不需要使用 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 选项可在单词之间使用一个空格,在句子之间使用两个空格。