蚊章汇 - fmt
type: channel
link: https://linuxcn.bwsl.wang/tag/fmt/
items: 我是如何使用 Linux fmt 命令来格式化文本
items: Linux 的 fmt 命令用法与案例

我是如何使用 Linux fmt 命令来格式化文本
type: item
date: 2022-08-02T02:43:15+08:00
description: 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 …

Linux 的 fmt 命令用法与案例
type: item
date: 2018-01-15T21:54:14+08:00
description: 有时你会发现需要格式化某个文本文件中的内容。比如，该文本文件每行一个单词，而任务是把所有的单词都放在同一行。当然，你可以手工来做，但没人喜欢手工做这么耗时的工作。而且，这只是一个例子 - 事实上的任务可能千奇百怪。好在，有一个命令可以满足至少一部分的文本格式化的需求。这个工具就是 fmt。本教程将会讨论 fmt 的基本用法以及它提供的一些主要功能。文中所有的命令和指令都在 Ubuntu 16.04LTS 下经过了测试。Linux fmt 命令fmt 命令是一个简单的文本格式化工具，任何人都能在命令行下运行它。它的基本语法为：fmt [-WIDTH] [OPTION]... [FILE]... 它的 man 页是这么说的：重新格式化文件中的每一个段落，将结果写到标准输出。选项 -WIDTH 是 --width=DIGITS 形式的缩写。下面这些问答方式的例子应该能让你对 fmt 的用法有很好的了解。Q1、如何使用 fmt 来将文本内容格式成同一行？使用 fmt 命令的基本形式（省略任何选项）就能做到这一点。你只需要将文件名作为参数传递给它。fmt [file-name] 下面截屏是命令的执行结果：你可以看到文件中多行内容都被格式化成同一行了。请注意，这并不会修改原文件（file1）。Q2、如何修改最大行宽？默认情况下，fmt 命令产生的输出中的最大行宽为 75。然而，如果你想的话，可以用 -w 选项进行修改，它接受一个表示新行宽的数字作为参数值。fmt -w [n] [file-name] 下面这个例子把行宽削减到了 20：Q3、如何让 fmt 突出显示第一行？这是通过让第一行的缩进与众不同来实现的，你可以使用 -t 选项来实现。fmt -t [file-name] Q4、如何使用 fmt 拆分长行？fmt 命令也能用来对长行进行拆分，你可以使用 -s 选项来应用该功能。fmt -s [file-name] 下面是一个例子：Q5、如何在单词与单词之间，句子之间用空格分开？fmt 命令提供了一个 -u 选项，这会在单词与单词之间用单个空格分开，句子之间用两个空格分开。你可以这样用：fmt -u [file-name] 注意，在我们的案例中，这个功能是默认开启的。总结没错，fmt 提供的功能不多，但不代表它的应用就不广泛。因为你永远不知道什么时候会用到它。在本教程中，我们已经讲解了 fmt 提供的主要选项。若想了解更多细节，请查看该工具的 man 页。via: https://www.howtoforge.com/linux-fmt-command/作者：Himanshu Arora 译者：lujun9972 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出