mac的WC命令显示少一个结果

时间:2012-09-27 07:15:34

标签: unix

我有一个超过60MB大小的文本文件。它有5105043行的条目,但是当我在做wc -l时,它只给出了5105042个结果,比实际结果少了一个。有谁知道为什么会这样?

文件大小时是否常见?

3 个答案:

答案 0 :(得分:7)

最后一行不包含新行。

获得所需结果的一个技巧是:

sed -n '=' <yourfile> | wc -l

这告诉sed只打印文件中每行wc计算的行号。可能有更好的解决方案,但这有效。

答案 1 :(得分:2)

您文件中的最后一行可能缺少换行符结尾。 IIRC,wc -l仅计算文件中换行符的数量。

如果您尝试:cat -A file.txt | tail您的最后一行是否包含尾随美元符号($)?

修改

假设文件中的最后一行缺少换行符,您可以附加一个换行符来纠正它:

printf "\n" >> file.txt

wc -l的结果现在应该是一致的。

答案 2 :(得分:0)

60 MB 似乎有点大文件,但对于小文件。一种选择可能是

cat -n file.txt

cat -n sample.txt | cut -f1 | tail -1