【busybox记录】【shell指令】fmt

本文详细介绍了GUNfmt命令在Linux中的使用,包括C代码和字符串示例,以及各种格式化选项如冠边缩进、标记段落、指定行长度等。该命令用于重新格式化文本段落,优化代码可读性。
摘要由CSDN通过智能技术生成

目录

内容来源:

【GUN】【fmt】指令介绍

【linux】【fmt】指令介绍

使用示例 - 以C代码为例:

1、以C代码为例 - 看看格式化结果

2、以C代码为例 - 冠边缩进模式

3、以C代码为例 - 标记段落模式

4、以C代码为例 - 分割过长的行

5、以C代码为例 - 统一的间距

6、以C代码为例 - 指定行的长度

7、以C代码为例 - 指定一个目标行

8、以C代码为例 - 只格式化指定字符开始的行

使用示例 - 以字符串为例:

1、以字符串为例 - 看看格式化结果

2、以字符串为例 - 冠边缩进模式

3、以字符串为例 - 标记段落模式

4、以字符串为例 - 分割过长的行

5、以字符串为例 - 统一的间距

6、以字符串为例 - 指定行的长度

7、以字符串为例 - 指定一个目标行

8、以字符串为例 - 只格式化指定字符开始的行

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【fmt】指令介绍

fmt: 重新格式化段落文本
fmt 填充和连接行以生成(最多)给定字符数(默认为75)的输出行。
简介:fmt [option]... [file]...
	fmt 从指定的文件参数(或标准输入,如果没有给出)读取,并写入标准输出。
	默认情况下,输出中会保留空行、单词之间的空格和缩进;不同缩进的连续输入行不连接;选项卡在输入时展开,在输出时引入。
	fmt更喜欢在句子末尾断行,并试图避免在句子的第一个单词之后或最后一个单词之前断行。
	断句可以定义为段落的结尾,也可以定义为以'.?!',后面跟着两个空格或行尾,忽略中间的括号或引号。和TEX一样,fmt在选择换行之前会阅读整个“段落”;
	该算法是Donald E. Knuth和Michael F. Plass在“将段落分解为行”一文中给出的算法的变体,
	Software: Practice & Experience 11, 11 (November 1981), 1119–1184.
该程序接受以下选项。参见第2章[常见选项],第2页。
‘-c’
‘--crown-margin’
	冠边缩进模式:保持段落前两行缩进,并将后续每一行的左边界与第二行的左边界对齐。
‘-t’
‘--tagged-paragraph’
	标记段落模式:类似于冠边距模式,不同之处在于,如果段落的第一行缩进与第二行缩进相同,则第一行被视为单行段落。
‘-s’
‘--split-only’
	只有分割线。不要把较短的句子连成较长的句子。这可以防止示例代码行和其他类似的“格式化”文本被过度组合。
‘-u’
‘--uniform-spacing’
	统一的间距。减少单词之间的间距为一个空格,句子之间的间距为两个空格。
‘-width’
‘-w width’
‘--width=width’
	最多填充宽度字符的输出行(默认75或goal加10,如果提供了goal)。
‘-g goal’
‘--goal=goal’
	fmt最初试图使线条目标字符宽。默认情况下,它比width短7%。
‘-p prefix’
‘--prefix=prefix’
	只有以prefix开头的行(可能前面有空格)受格式化影响。为了格式化,前缀和前面的空格会被剥离,然后重新附加到每个格式化的输出行。一种用法是格式化某些类型的程序注释,同时保持代码不变。

	退出状态为零表示成功,非零值表示失败。

【linux】【fmt】指令介绍

[root@localhost bin]# fmt --help
用法:fmt [-宽度] [选项]... [文件]...
Reformat each paragraph in the FILE(s), writing to standard output.
The option -WIDTH is an abbreviated form of --width=DIGITS.

如果没有指定文件,或者文件为"-",则从标准输入读取。

必选参数对长短选项同时适用。
  -c --crown-margin		保持前两行的缩进
  -p, --prefix=字符串		只对以指定字符串开头的行重新格式化,
				将前缀重新附着到被重新格式化的行上
  -s, --split-only		分割过长的行,但不自动补足
  -t, --tagged-paragraph    indentation of first line different from second
  -u, --uniform-spacing     one space between words, two after sentences
  -w, --width=WIDTH         maximum line width (default of 75 columns)
  -g, --goal=WIDTH          goal width (default of 93% of width)
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 fmt 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/fmt>
或者在本地使用:info '(coreutils) fmt invocation'

使用示例 - 以C代码为例:

1、以C代码为例 - 看看格式化结果

指令:fmt test1.txt

格式化为一个所有单词在一行的模式,每行默认长度是75,保证单词的完整不会中途截断。

2、以C代码为例 - 冠边缩进模式

指令:fmt -c test1.txt

保持与第一行一样的缩进,然后每行最长默认是75

3、以C代码为例 - 标记段落模式

指令:fmt -t test1.txt

4、以C代码为例 - 分割过长的行

指令:fmt -s test1.txt

5、以C代码为例 - 统一的间距

指令:fmt -u test1.txt

由于没有多个空格隔开的单词,所以看不出效果

6、以C代码为例 - 指定行的长度

指令:fmt -w 10 test1.txt

约定了每行只显示10个字符,所以一行被格式化成多行

7、以C代码为例 - 指定一个目标行

指令:fmt -g 10 test1.txt

与 -w 选项差不多,但是实际上在处理更长的字符串时每行和 -w 想比不确定会不会增加

8、以C代码为例 - 只格式化指定字符开始的行

指令:fmt -p // test1.txt

指定处理 // 开头的行,所以只有 // 开头的行被格式化

使用示例 - 以字符串为例:

1、以字符串为例 - 看看格式化结果

指令:fmt test2.txt

格式化为一个所有单词在一行的模式,每行默认长度是75,保证单词的完整不会中途截断。

2、以字符串为例 - 冠边缩进模式

指令:fmt -c test2.txt

保持与第一行一样的缩进,然后每行最长默认是75

3、以字符串为例 - 标记段落模式

指令:fmt -t test2.txt

保持第一行,第二行有缩进

4、以字符串为例 - 分割过长的行

指令:fmt -s test2.txt

5、以字符串为例 - 统一的间距

指令:fmt -u test2.txt

这些多个空行隔开的单词被格式化为1个空格

6、以字符串为例 - 指定行的长度

指令:fmt -w 30 test2.txt

约定了每行只显示30个字符,所以一行被格式化成多行

注意此处并不会去掉多余的空格,如果需要去掉多余的空格,加上 -u 参数

7、以字符串为例 - 指定一个目标行

指令:fmt -g 30 test2.txt

与 -w 选项差不多,但是实际上在处理更长的字符串时每行和 -w 想比不确定会不会增加

8、以字符串为例 - 只格式化指定字符开始的行

指令:fmt -p this test2.txt

把this开头的行拆分成了多行

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:

NA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻面条EW

感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值