20

我从wc -l命令中得到了错误的结果。看了半天:(查了一下发现问题的核心,下面是仿真:

$ echo "line with end" > file
$ echo -n "line without end" >>file
$ wc -l file
       1 file

这里有两行,但缺少最后一个“\n”。有什么简单的解决办法吗?

4

2 回答 2

30

因为该wc行是以“\n”字符结尾的。解决方案之一是 grep 行。grep 不寻找结尾的 NL。

例如

$ grep -c . file        #count the occurrence of any character
2

以上不会计算空行。如果你想要它们,请使用

$ grep -c '^' file      #count the beginnings of the lines
2
于 2013-05-14T01:35:15.650 回答
17

从手册页wc

 -l, --lines
              print the newline counts

表单手册页echo

 -n     do not output the trailing newline

所以你有1 newline你的文件,因此wc -l显示1.

您可以使用以下awk命令来计算行数

 awk 'END{print NR}' file
于 2013-05-14T01:35:04.450 回答