如何计算文档中的行数?

我有这样的线条,我想知道我实际上有多less线…

09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00 09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00 09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00 09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00 09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00 09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00 

有没有一种方法可以使用linux命令统计它们?

使用wc

 wc -l <filename> 

这将输出<filename>的行数:

 $ wc -l /dir/file.txt 3272485 /dir/file.txt 

或者,从结果中省略<filename>使用wc -l < <filename>

 $ wc -l < /dir/file.txt 3272485 

您也可以将数据传输到wc

 $ cat /dir/file.txt | wc -l 3272485 $ curl yahoo.com --silent | wc -l 63 

要统计所有线路使用:

 $ wc -l file 

要仅使用图案过滤和计数线条:

 $ grep -w "pattern" -c file 

或使用-v来反转匹配:

 $ grep -w "pattern" -c -v file 

请参阅grep手册页以查看-e,-i和-x参数

 wc -l <file.txt> 

要么

 command | wc -l 

有很多方法。 使用wc是一个。

wc -l file

其他包括

awk 'END{print NR}' file

sed -n '$=' file (GNU sed)

 grep -c ".*" file 

工具wc是UNIX和类UNIX操作系统中的“字计数器”,您还可以通过添加-l选项来使用它来对文件中的行进行计数,因此wc -l foo将计算foo的行数。 你也可以像这样pipe道输出: ls -l | wc -l ls -l | wc -l ,它会告诉你当前目录中有多less个文件。

使用wc

 wc -l <filename> 

如果要检查目录中所有文件的总行,可以使用find和wc:

 find . -type f -exec wc -l {} + 

如果所有你想要的是行数(而不是行数和愚蠢的文件名称回来):

 wc -l < /filepath/filename.ext 

如前所述,这些也工作(但由于其他原因而较差):

 awk 'END{print NR}' file # not on all unixes sed -n '$=' file # (GNU sed) also not on all unixes grep -c ".*" file # overkill and probably also slower 

像这样使用nl

 nl filename 

man nl

将每个FILE写入标准输出,并添加行号。 如果没有FILE,或者FILE是 – 读取标准input。

我一直在使用这个:

 cat myfile.txt | wc -l 

我更喜欢它接受的答案,因为它不打印文件名,你不必使用awk来解决这个问题。 接受的答案:

wc -l myfile.txt

但我认为最好的一个是GGB667的答案:

wc -l < myfile.txt

我可能会从现在开始使用它。 这比我的方式略短。 如果有人愿意,我会采取我以前的做法。 输出与这两种方法相同。

以上是首选的方法,但“猫”命令也可以帮助:

 cat -n <filename> 

将以行号显示文件的全部内容。

 wc -l file.txt | cut -f3 -d" " 

只返回行数

当我正在寻找一种计算多个文件行的方法时,我看到了这个问题,所以如果要计算一个.txt文件的多个文件行,可以这样做,

 cat *.txt | wc -l 

它也将在一个.txt文件上运行;)

将文件的输出redirect/configuration到wc -l应该就足够了,如下所示:

 cat /etc/fstab | wc -l 

然后提供否。 只有线。

我只是做了一个程序来做到这一点(与node

 npm install gimme-lines gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html 

https://github.com/danschumann/gimme-lines/tree/master

 cat file.log | wc -l | grep -oE '\d+' 
  • grep -oE '\d+' :只为了返回数字。

正如其他人所说, wc -l是最好的解决scheme,但为了将来的参考,你可以使用Perl:

 perl -lne 'END { print $. }' 

$. 包含行号和END块将在脚本END时执行。

我知道这是旧的,但仍然: 计数过滤的线

我的文件如下所示:

 Number of files sent Company 1 file: foo.pdf OK Company 1 file: foo.csv OK Company 1 file: foo.msg OK Company 2 file: foo.pdf OK Company 2 file: foo.csv OK Company 2 file: foo.msg Error Company 3 file: foo.pdf OK Company 3 file: foo.csv OK Company 3 file: foo.msg Error Company 4 file: foo.pdf OK Company 4 file: foo.csv OK Company 4 file: foo.msg Error 

如果我想知道有多less个文件发送OK:

 grep "OK" <filename> | wc -l 

要么

 grep -c "OK" filename