目录
内容来源:
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