Linux常用命令学习笔记:fmt

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. 注意事项

  1. 行宽计算:行宽包括空格和标点符号
  2. 段落分隔:空行被视为段落分隔符
  3. 缩进保留:使用 -c选项保留段落开头的缩进
  4. 前缀格式化:使用 -p选项格式化指定前缀的段落
  5. 性能问题:处理大文件时可能较慢

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命令是文本格式化的实用工具,特别适合整理代码注释和格式化文档。


作 者:南烛
链 接:https://www.itnotes.top/archives/359
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇