根据终端的长度计算换行后的行数

假设您的tput cols(或COLUMNS)等于,100并且您有一个纯文本文件foo.txt,其中一行的长度为120个字符。

如果您想计算它包含的行数,那么cat foo.txt | wc -l不足为奇,输出大概是1

但是,如果您使用诸如的寻呼机打开文件,例如lessless 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。)

迈克尔·杰罗斯(Michael Jaros)

实际上,有一个更好的解决方案:

fold -w "$COLUMNS" testfile | wc -l

fold命令会将文件包装到给定的列数,并且可以作为GNU coreutils的一部分广泛使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章