如何从 wc -l 输出中删除文件名?

如何从 wc -l 输出中删除文件名?

我想使用 来计算文件中的行数wc -l,但只输出数字,不输出后面的空格和文件名。根据评论编辑:文件名中可能包含数字。

目前如果我这样做:

wc -l /path/to/file

在一个有 176 行的文件上,输出是:

176 /path/to/file

这是在 bash 脚本中,结果数字将被分配为变量的值。

答案1

我会用:

<file wc -l

相反的是,它cat file | wc -l不需要 fork shell 并运行另一个进程(并且运行速度更快):

% time </tmp/ramdisk/file wc -l     
8000000
wc -l < /tmp/ramdisk/file  0,07s user 0,06s system 97% cpu 0,132 total
% time cat /tmp/ramdisk/file | wc -l
8000000
cat /tmp/ramdisk/file  0,01s user 0,16s system 80% cpu 0,204 total
wc -l  0,09s user 0,10s system 94% cpu 0,203 total

/tmp/ramdisk/file存储在 ramdisk 中以消除 I/O 和缓存问题。)

然而对于小文件来说,差异确实可以忽略不计。


另一种方法是:

wc -l file | cut -d ' ' -f 1

在我的测试中,其性能与 大致相同<file wc -l

答案2

您可以使用 cat 用简单的一行程序来完成此操作。 cat deluge1.log | wc -l

答案太简单了,不需要冗长的回答。

答案3

另一个更简洁的选项 wc -l filename | awk '{print $1}

文件中条目的示例列表

bash-4.1$ wc -l ../CBB_Nodes.txt | awk '{print $1}' 
398
bash-4.1$ 
without awk it would have been as usual with the file name. 

bash-4.1$ wc -l ../CBB_Nodes.txt
398 ../CBB_Nodes.txt
bash-4.1$ 

答案4

另一个简单的替代方法对我有用。

cat /c/dev/P2Working/.gitignore | wc -l

在此处输入图片描述

相关内容