1. 命令概述
- 命令名称:
fmt(英文全拼:format) - 核心功能:格式化文本,调整文本的行宽和段落
- 主要用途:文本格式化、段落重排、代码注释整理
2. 语法格式
fmt [选项] [文件...]
3. 常用选项
| 选项 | 说明 |
|---|---|
-w | 设置行宽(默认75) |
-s | 只拆分长行,不合并短行 |
-c | 保留段落开头的缩进 |
-t | 首行和后续行使用不同的缩进 |
-u | 统一空格(一个单词一个空格) |
-p | 格式化指定前缀的段落 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 常用实例详解
(1) 基本格式化
# 格式化文件,默认行宽75
fmt file.txt
# 指定行宽为80
fmt -w 80 file.txt
# 格式化并保存到新文件
fmt file.txt > formatted.txt
# 格式化标准输入
echo "这是一段很长的文本,需要被格式化" | fmt
(2) 行宽控制
# 设置行宽为60
fmt -w 60 file.txt
# 设置行宽为100
fmt -w 100 file.txt
# 设置行宽为50,适合代码注释
fmt -w 50 comments.txt
(3) 段落处理
# 保留段落开头的缩进
fmt -c file.txt
# 首行和后续行使用不同的缩进
fmt -t file.txt
# 只拆分长行,不合并短行
fmt -s file.txt
# 统一空格(一个单词一个空格)
fmt -u file.txt
(4) 前缀格式化
# 格式化以"# "开头的段落(注释)
fmt -p '# ' file.txt
# 格式化以"// "开头的段落
fmt -p '// ' file.txt
# 格式化以"> "开头的段落(引用)
fmt -p '> ' file.txt
5. 实际应用场景
场景一:文本格式化
# 格式化README文件
fmt README.md > README_formatted.md
# 格式化邮件内容
fmt -w 72 email.txt
# 格式化文档注释
fmt -w 60 -c doc.txt
场景二:代码注释整理
# 格式化Python注释
fmt -p '# ' -w 60 script.py
# 格式化C/C++注释
fmt -p '// ' -w 60 source.c
# 格式化多行注释
fmt -p ' * ' -w 60 source.java
场景三:日志文件处理
# 格式化日志文件,统一行宽
fmt -w 80 log.txt > formatted_log.txt
# 只拆分长行,保留短行
fmt -s log.txt
# 保留时间戳的缩进
fmt -c log.txt
场景四:配置文件整理
# 格式化配置文件注释
fmt -p '# ' config.conf
# 格式化JSON文件(先去除换行)
tr -d '\n' < data.json | fmt -w 80
# 格式化XML文件
xmllint --format file.xml | fmt -w 80
6. 与其他命令的区别
| 命令 | 特点 | 适用场景 |
|---|---|---|
fmt | 格式化文本行宽 | 段落重排、文本格式化 |
fold | 按指定宽度折行 | 固定宽度折行 |
par | 段落重排工具 | 高级段落格式化 |
sed | 流编辑器 | 复杂文本处理 |
awk | 文本处理工具 | 字段处理、格式化 |
7. 注意事项
- 行宽计算:行宽包括空格和标点符号
- 段落分隔:空行被视为段落分隔符
- 缩进保留:使用
-c选项保留段落开头的缩进 - 前缀格式化:使用
-p选项格式化指定前缀的段落 - 性能问题:处理大文件时可能较慢
8. 常见问题解决
(1) 中文字符处理
# 中文字符可能需要调整行宽
fmt -w 40 chinese.txt # 中文字符宽度约为英文字符的2倍
# 或者使用其他工具
fold -w 40 chinese.txt
(2) 保留换行符
# 使用 -s 选项只拆分长行
fmt -s file.txt
# 或者使用 sed 保留空行
sed '/^$/p' file.txt | fmt
(3) 大文件处理
# 分块处理大文件
split -l 1000 large_file.txt chunk_
for chunk in chunk_*; do
fmt "$chunk" >> formatted.txt
done
(4) 特定格式处理
# 格式化Markdown文件(保留标题)
sed '/^#/!s/^/ /' file.md | fmt -w 80
# 格式化代码文件(保留缩进)
fmt -c source.py
核心要点总结:
fmt用于格式化文本行宽和段落- 常用选项:
-w(设置行宽)、-s(只拆分不合并)、-c(保留缩进)、-p(前缀格式化) - 主要用途:文本格式化、代码注释整理、段落重排、配置文件处理
- 实际应用:README文件格式化、代码注释整理、日志文件处理、邮件内容格式化
- 注意事项:中文字符需要调整行宽,大文件处理可能较慢
fmt命令是文本格式化的实用工具,特别适合整理代码注释和格式化文档。