小智 10
grep -c返回匹配行数.只需使用空字符串""作为匹配表达式:
$ echo -n $'a\nb\nc' > 2or3.txt
$ cat 2or3.txt | wc -l
2
$ grep -c "" 2or3.txt
3
Run Code Online (Sandbox Code Playgroud)
最好\n在Unix文件中以EOL结尾所有行.你可以做:
{ cat file; echo ''; } | wc -l
Run Code Online (Sandbox Code Playgroud)
或者这个awk:
awk 'END{print NR}' file
Run Code Online (Sandbox Code Playgroud)
无论文件中的最后一行是否以换行符结尾,这种方法都会给出正确的行数。
awk将确保在其输出中,它打印的每一行都以换行符结尾。因此,要确保每行在将行发送到 之前以换行符结尾wc,请使用:
awk '1' file | wc -l
Run Code Online (Sandbox Code Playgroud)
在这里,我们使用awk仅由数字组成的简单程序1。 awk将这个神秘的语句解释为它所做的“打印行”,并确保存在尾随换行符。
让我们创建一个包含三行的文件,每行以换行符结尾,并计算行数:
$ echo -n $'a\nb\nc\n' >file
$ awk '1' f | wc -l
3
Run Code Online (Sandbox Code Playgroud)
找到了正确的号码。
现在,让我们在缺少最后一行的情况下重试:
$ echo -n $'a\nb\nc' >file
$ awk '1' f | wc -l
3
Run Code Online (Sandbox Code Playgroud)
这仍然提供了正确的数字。 awk自动更正丢失的换行符,但如果存在最后一个换行符,则不处理文件。