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