我有一个超过 60MB 大小的文本文件。它在 5105043 行中有条目,但是当我执行 wc -l 时,它只给出 5105042 结果,比实际结果少一个。有谁知道为什么会这样?
文件很大时这是常见的事情吗?
我有一个超过 60MB 大小的文本文件。它在 5105043 行中有条目,但是当我执行 wc -l 时,它只给出 5105042 结果,比实际结果少一个。有谁知道为什么会这样?
文件很大时这是常见的事情吗?
最后一行不包含新行。
获得您想要的结果的一个技巧是:
sed -n '=' <yourfile> | wc -l
这告诉sed
只打印文件中每一行的行号,wc
然后计算。可能有更好的解决方案,但这有效。
The last line in your file is probably missing a newline ending. IIRC, wc -l
merely counts the number of newline characters in the file.
If you try: cat -A file.txt | tail
does your last line contain a trailing dollar sign ($
)?
EDIT:
Assuming the last line in your file is lacking a newline character, you can append a newline character to correct it like this:
printf "\n" >> file.txt
The results of wc -l
should now be consistent.
60 MB 似乎有点大文件,但对于小文件。一种选择可能是
cat -n file.txt
或者
cat -n sample.txt | cut -f1 | tail -1