假设您的tput cols
(或COLUMNS
)等于,100
并且您有一个纯文本文件foo.txt
,其中一行的长度为120个字符。
如果您想计算它包含的行数,那么cat foo.txt | wc -l
不足为奇,输出大概是1
。
但是,如果您使用诸如的寻呼机打开文件,例如less
,less foo.txt
那么您的眼睛实际上会看到的是两行(AFAIK,除非您不说--chop-long-lines
,否则less
将“包装”比终端的宽度更长的行) 。
同样,如果你想试试,看看行号,使用less
,喜欢less --LINE-NUMBERS foo.txt
,比输出会是这样的:
1 something something...
1 more stuff
基本上less
是“意识到”唯一的一行foo.txt
比终端的宽度长,因此它将“包裹”它以可视化,但是会告诉您实际上您看到的第一行和第二行实际上是#1行中的同一行foo.txt
。
因此,我的问题是:包裹后(眼睛看到的行数)而不是文件实际包含的行数如何计算(以bash表示)?(在上述情况下,该数字将2
代替1
。)
实际上,有一个更好的解决方案:
fold -w "$COLUMNS" testfile | wc -l
该fold
命令会将文件包装到给定的列数,并且可以作为GNU coreutils的一部分广泛使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句