How to count lines in a document?
我有这样的线条,我想知道我有多少线条…
1 2 3 4 5 6 7 | 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命令来计算它们的总数?
使用
1 | wc -l <filename> |
这将输出
1 2 | $ wc -l /dir/file.txt 3272485 /dir/file.txt |
或者,为了从结果中省略
1 2 | $ wc -l < /dir/file.txt 3272485 |
您还可以将数据传输到
1 2 3 4 | $ cat /dir/file.txt | wc -l 3272485 $ curl yahoo.com --silent | wc -l 63 |
要计算所有行,请使用:
1 | $ wc -l file |
要仅筛选和计数带图案的行,请使用:
1 | $ grep -w"pattern" -c file |
或者使用-v来反转匹配:
1 | $ grep -w"pattern" -c -v file |
请参阅grep手册页查看-e、-i和-x参数…
1 | wc -l <file.txt> |
或
1 | command | wc -l |
有很多方法。使用
其他包括
1 | grep -c".*" file |
在类似Unix和Unix的操作系统中,工具
使用
1 | wc -l <filename> |
如果要检查目录中所有文件的总行数,可以使用find和wc:
1 | find . -type f -exec wc -l {} + |
如果您只需要行数(而不是行数和返回的愚蠢文件名):
1 | wc -l < /filepath/filename.ext |
如前所述,这些功能也可以工作(但由于其他原因较低):
1 2 3 | 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 |
我一直在用这个:
1 | cat myfile.txt | wc -l |
我更喜欢它而不是接受的答案,因为它不打印文件名,而且您不必使用
但我认为最好的答案是GGB667的答案:
从现在开始我可能会用它。比我的路稍微短一点。我正在用我以前的方法来做,以防有人喜欢。这两种方法的输出是相同的。
这样使用
1 | nl filename |
来自
Write each FILE to standard output, with line numbers added. With
no FILE, or when FILE is -, read standard input.
以上是首选方法,但"cat"命令也有帮助:
1 | cat -n <filename> |
将用行号显示文件的全部内容。
我在寻找计算多个文件行的方法时看到了这个问题,所以如果你想计算一个.txt文件的多个文件行,你可以这样做,
1 | cat *.txt | wc -l |
它还将在一个.txt文件上运行;)
1 | wc -l file.txt | cut -f3 -d"" |
仅返回行数
1 | cat file.log | wc -l | grep -oE '\d+' |
grep -oE '\d+' :仅返回数字。
重定向/通过管道将文件输出到
1 | cat /etc/fstab | wc -l |
然后只提供行数。
我知道这是旧的,但还是:计算过滤后的行数
我的文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
如果我想知道发送了多少文件,可以:
1 | grep"OK" <filename> | wc -l |
或
1 | grep -c"OK" filename |
或使用文件名模式(例如,文件名中带有时间戳的日志文件)计算子目录中的所有行数:
1 | wc -l ./**/*_SuccessLog.csv |
计数行数并将结果存储在变量中使用此命令:
我刚做了一个程序来做这个(和
1 2 | npm install gimme-lines gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html |
https://github.com/danschumann/gimme-lines/tree/master网站
正如其他人所说,
1 | perl -lne 'END { print $. }' |