9

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

文件很大时这是常见的事情吗?

4

3 回答 3

8

最后一行不包含新行。

获得您想要的结果的一个技巧是:

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

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

于 2012-09-27T07:32:06.757 回答
3

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.

于 2012-09-27T07:22:01.030 回答
0

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

cat -n file.txt

或者

cat -n sample.txt | cut -f1 | tail -1
于 2020-12-21T00:37:51.537 回答