使用 Linux bash 统计文件中的行数

linuxopen sourceoperating system更新于 2026/1/27 17:07:17

概述

我们有时需要确定特定文本文档的大小。例如,如果我们想确定某封电子邮件的长度,我们可能会使用该邮件的行数来估算其大小。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) 命令将每个输入文件视为一条单独的记录。然后,可以通过引用 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 命令是最常用的,也是查找特定文件行号最简单的方法。


相关文章


有用资源