首页/系统/Linux 运维命令速查/fmt 重排段落文本
文本处理77 条

fmt 重排段落文本

把换行混乱的段落重新排成统一宽度:邮件、Markdown 草稿整理利器;-s 只拆不并、-u 统一多余空格。

Linux 运维命令速查系统更新于 2026-10-13

fmt 重排段落

fmt 是 GNU coreutils 里的段落排版工具,把被硬换行切得七零八落的自然语言重新排成统一宽度,或反过来把过长的行拆开。它按空行识别段落边界,缺省宽度 75 列。整理邮件草稿、清洗从别处粘来的文档、统一提交信息与变更说明的换行,用它比手工敲回车省事得多。

基本信息

适用平台Linux(GNU coreutils);macOS 自带 BSD 版 fmt,选项较少
语法fmt [-w 宽度] [-s] [-u] [-p 前缀] [文件]
默认宽度75 列,可用 -w 调整
处理对象自然语言段落,按空行分段,空行原样保留

典型使用场景

  • 整理从网页或聊天工具复制来的文本,去掉多余的硬换行
  • 统一变更说明、提交信息的行宽,便于在评审界面里阅读
  • 把一整段很长的说明按 72 列拆开,嵌入邮件不超宽
  • 清理文本里多余的空格与制表符,让段落恢复单空格间隔
  • 对带引用前缀的文本按 -p 指定前缀重排,保留引用结构

常用示例

常用示例
fmt -w 72 draft.txt > clean.txt    # 排到 72 列并输出到新文件
fmt -s -w 80 long.txt              # 只做拆分不做合并
fmt -u -w 72 messy.txt             # 顺带把多余空格压成单个
fmt -w 68 -p '> ' quote.txt        # 按引用前缀重排,保留引用标记
fmt -t -w 72 tagged.txt            # 段落首行缩进时用标记段落模式
cat draft.txt | fmt -w 72 | head    # 与管道组合先看效果再落盘

选项逐项读法

选项作用使用注意
-w设置目标行宽,缺省 75终端或邮件建议 68 到 72
-s只拆长行,不合并短行保留原有换行结构时用它
-u统一空格:词间单空格、句后两空格会改写句末空格习惯,正式文本先用样本试
-p只重排以此前缀开头的行引用块、注释块专用
-t标记段落模式,首行缩进而其余行不缩进处理缩进式段落时更整齐
fmt 对代码、表格、缩进结构化的文本是灾难,它会按段落把一切重新折行。只对自然语言段落使用,代码要格式化请交给专用工具。
中文没有空格分词,fmt 仍按空格与宽度折行,结果往往断在句中间。中文排版更适合用支持 CJK 宽度的工具,或干脆按句号手工分段。

易错点

  • 误对代码或表格文件执行 fmt 会把缩进与对齐全部破坏,处理前先确认文件类型
  • 处理中文段落折行位置不自然,产出需要人工再读一遍
  • -u 会改写句末空格与词间空格习惯,对严格格式要求(如提交模板)先在小样本上验证
  • 直接 fmt 覆盖原文件会丢失原始排版,先输出到新文件再核对

数据来源与参考

  • man 1 fmt(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌