使用Linux bash命令统计文件行数
概述
我们有时需要确定特定文本文档的大小。例如,如果我们试图弄清楚某个电子邮件有多长,我们可以使用该邮件的行数来帮助我们估计其大小。Linux 有几种不同的方法可以确定文本文档的长度。
我们将仔细研究一些计算特定文件行数的最常用方法。
设置
在本快速教程中,我们将使用名为“programing.txt”的文本文件,其中包含当今使用的一些最流行的计算机语言。
$ cat programming.txt JavaScript Java C Python C# PHP C++ Go R Ruby
如果我们手动计算单词数,我们会得到10。但是如果我们手动计算,随着单词数量的增加,它很快就会变成一项繁琐的任务,难以完成。但是,有一些基于命令的程序可以帮助我们自动计算单词数。
wc 命令
要计算字符数、换行符等,分别使用 wc -l、wc -w 和 wc -c 命令。
我们使用 wc 命令来计算文件中的行数。添加 -l 标志会给出总行数和文件名。
我们可以使用 wc -l (单词计数) 命令查看文件中共有多少行。
$ wc -l programming.txt 10 programming.txt
从输出中我们可以看到,它输出了数字 10,表示总行数,以及文件名 programming.txt。
我们可以使用 shell 将 program.txt 文件重定向到 wc -l 命令的标准输出。这将给出字符数,而不会显示文件名。
$ wc -l < programming.txt 10
另一种在文件中运行命令的常用方法是使用cat 命令 并将它们通过 bash 解释器传递。
$ cat programming.txt | wc -l 10
sed 命令
sed 是一种对文件执行基本转换的工具。它主要用于在给定的输入中查找和替换字符串。您也可以用它来计算特定输入中的行数。
sed 可用于打印每一行的行号。
sed -n ‘=’
我们可以使用“sed”命令、“-n”选项和等号 (=) 来打印行号而不显示文件的文本。
$ sed -n '=' programming.txt 1 2 3 4 5 6 7 8 9 10
从结果中我们可以看到,该命令只输出了行数。但是,这种方法在处理大型文本文档时扩展性不好。
sed -n ‘$=’
我们通常更喜欢使用-c 选项和'=' 参数来计算文本文档的总行数。sed 命令的输出是文档的总行数。
$ sed -n '$=' programming.txt 10
awk 命令
awk 命令将每个输入文件视为一个单独的记录。然后可以通过引用内置 awk 变量 NR(记录数)在最后打印记录数。
$ awk 'END { print NR }' programming.txt 10
cat 命令
cat (连接) 命令将多个文件作为参数,并将它们打印到标准输出。它使用 -n 选项显示每个文件的行及其对应的编号。
$ cat -n programming.txt 1 JavaScript 2 Java 3 C 4 Python 5 C# 6 PHP 7 C++ 8 Go 9 R 10 Ruby
我们可以看出,该命令输出了行号和文件的内容。但是,这种方法对于较大的文件并不实用。
结论
我们已经看到了使用Bash 统计文本文件行数的几种不同方法。
在处理大型文件时,一些显示文件内容的命令会变得低效且不实用。
wc -l 命令是最常用的,也是查找特定文件行号最简单的方法。