作者: Himanshu Arora 译者: LCTT DarkSun
本教程将会讨论 fmt
的基本用法以及它提供的一些主要功能。
适用的 Linux 版本
fmt
命令是一个标准的 Linux 命令,它适用于大多数的 Linux 发行版,如 Ubuntu、Debian、Fedora、CentOS 等。
如果系统中没有安装 fmt 命令,可以使用以下命令来安装它:
- 基于 Debian 的系统,如 Ubuntu,可以使用 apt-get 命令:
$ sudo apt-get install coreutils
- 基于 Red Hat 的系统,如 Fedora 或 CentOS,可以使用 yum 或 dnf 命令:
$ sudo yum install coreutils
或
$ sudo dnf install coreutils
fmt
命令基本语法:
fmt [-WIDTH] [OPTION]... [FILE]...
重新格式化文件中的每一个段落,将结果写到标准输出。选项
-WIDTH
是--width=DIGITS
形式的缩写。
fmt
命令基本语法常用选项说明
选项 | 说明 |
---|---|
-c | 保持每段前两行的缩进不变 |
-p | 只格式化以指定字符串开头的行,并保留该字符串 |
-s | 只拆分超过指定宽度的行,不合并不足指定宽度的行 |
-t | 保持每段前两行的缩进不变,并使第一行和第二行的缩进不同 |
-u | 使用一个空格分隔单词,两个空格分隔句子 |
-w | 指定每行的最大字符数 |
fmt
命令使用实例
-
重新排列文本到指定宽度:
将文件test.txt
重新排列成 85 个字符一行,并保存到新文件new.txt
中:fmt -w 85 test.txt > new.txt
-
格式化特定前缀的行:
只格式化以#
开头的注释行,并保留#
符号:fmt -p '#' code.py
-
保留前两行的缩进:并使第一行和第二行的缩进不同
fmt -t article.txt
-
统一单词和句子的间距:使用一个空格分隔单词,两个空格分隔句子
fmt -u poem.txt
-
默认的
fmt
命令:会将给定文件中的所有单词格式化为一行fmt kt.txt
-
使用
-s
选项拆分长行:拆分长行,但不填充它们fmt -s kt.txt
-
格式化多个文件:同时处理多个文件
fmt file1.txt file2.txt
-
使用重定向操作符: 使用重定向将格式化后的文本保存到新的文件中
fmt file1.txt > formatted_file1.txt
-
使用管道操作符:将其他命令的输出格式化
ls -l | fmt
fmt
命令的注意事项
-
fmt 命令只能处理普通文本文件,不能处理富文本文件或二进制文件。
-
fmt 命令会忽略空白行和制表符,并将多个空格替换为一个空格。
-
fmt 命令会尽量保持单词的完整性,不会在单词中间断行,除非单词本身就超过了指定的宽度。
-
fmt 命令会根据输入中的字符集切换来确定输出时是否需要切换字符集。如果输入中有 SI(shift in)和 SO(shift out)这样的控制字符,fmt 命令会相应地切换到正常字符集或替代字符集。
总结
fmt
提供的功能不多,但不代表它的应用就不广泛。
在本教程中讲解了 fmt
提供的主要选项,了解更多细节,请查看该工具的 man 页。
via: https://www.howtoforge.com/linux-fmt-command/
作者:Himanshu Arora 译者:lujun9972 校对:wxy