调整每行的长度为指定的宽度,然后将处理结果打印到stdout中。
比如,对于如下文本:
使用命令fold -w 20来调整行长度,会产生如下输出:
uksd hgfskajdg a,skj
dgf alskdj gaksdg ak
dj gaklcsjdclasbdmla
k
如上所示,单词会被截断,该命令并不适合用于文本段落的调整。如果要进行文本段落的调整,可以使用fmt(1)命令。
注意,该工具适用于英文的文本,对于中文文本支持并不好(但不妨碍它的其他作用)。
命令行的语法格式
fold [OPTION]… [FILE]…
[FILE]:为要处理的文件。如果未指定,或者指定了-,则从stdin中读取。
命令支持的选项及含义
长选项的必填参数,在短选项中也是必须提供的。
-w, –width=WIDTH
行的宽度。默认为80列。
-b, –bytes
以字节为单位进行计数,而不是列数。因此,TAB、CR、BS会被视为一个字符。
-s, –spaces
在空格处中断。如果不使用该选项,单词会被直接截断。使用该选项后,会在单词结束处开始下一行。
–help
显示帮助并退出。
–version
显示版本信息。
退出码
如果执行成功,则返回0;执行失败则返回1;
注意事项
默认情况下,fold命令以列为单位进行计数,因此TAB会被视为多个列,CR(回车)会将列数视为0、BS(退格)会减少列。而-s选项会以字节进行计数,所以前面的TAB、CR、BS会被视为一个字符。
使用示例
分别用以下命令处理相同文本:
# echo ‘lsamkedrhgfjv awjv auksd hgfskajdg a,skjdgf alskdj gaksdg akdj gaklcsjdclasbdmlak’ | fold -w 20
lsamkedrhgfjv awjv a
uksd hgfskajdg a,skj
dgf alskdj gaksdg ak
dj gaklcsjdclasbdmla
k
# echo ‘lsamkedrhgfjv awjv auksd hgfskajdg a,skjdgf alskdj gaksdg akdj gaklcsjdclasbdmlak’ | fold -w 25
lsamkedrhgfjv awjv auksd
hgfskajdg a,skjdgf alskdj
gaksdg akdj gaklcsjdclas
bdmlak
# echo ‘lsamkedrhgfjv awjv auksd hgfskajdg a,skjdgf alskdj gaksdg akdj gaklcsjdclasbdmlak’ | fold -w 25 -s
lsamkedrhgfjv awjv auksd
hgfskajdg a,skjdgf
alskdj gaksdg akdj
gaklcsjdclasbdmlak
参考文献
- man 1 fold
- info ‘(coreutils) fold invocation’
- 参考fold在线手册
更新日志
- 03/19/2018 创建文章
- 05/29/2018 文章内容调整