使用命令 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