「fold(1)」-

调整每行的长度为指定的宽度,然后将处理结果打印到stdout中。

比如,对于如下文本:

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

如上所示,单词会被截断,该命令并不适合用于文本段落的调整。如果要进行文本段落的调整,可以使用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

参考文献

更新日志

  • 03/19/2018 创建文章
  • 05/29/2018 文章内容调整