wc -l 文件名显示少一行。请指导

wc -l 文件名显示少一行。请指导

使用命令 wc -l filename 当文件内的总行数为 2 时,它会少显示一行,但它只显示 1。请指导。

答案1

wc -l计算换行符的数量,即正确分隔的行数。

在您的情况下可能发生的情况是您的文件在最后一个换行符之后有一些字节。

因此,该文件不是有效的文本文件,您会发现某些应用程序会忽略这些额外的字节,有些应用程序会将其视为额外的行(有些应用程序会添加缺少的换行符)。

根据 POSIX 文本定义,这些额外的字节不构成一行。

然而, POSIX 合规者awk需要将这些视为形成额外的记录,因此:

awk 'END {print NR}' < your-file

会算一下。

假设是这种情况,最好是添加缺少的换行符:

printf '\n' >> your-file

例子:

$ printf 'a\nb' | wc -l
1
$ printf 'a\nb\n' | wc -l
2
$ printf 'a\nb' | awk 'END {print NR}'
2

相关内容