计算 Linux 文件行数的 6 种方法
数一下线数,估计一下大小。
要点
- 您可以使用带“-l”选项的 wc 命令来查找文件的行数(wc -l 文件名)。这还将打印文件的名称。
- sed 命令与“-n”选项的组合还可以提供行数(sed -n '=' 文件名)。该命令将打印行号,但不打印文件内容。
- 使用内置“NR”变量运行 awk 命令来获取文件的行数(awk 'END {print NR}' 文件名)。
想计算 Linux 文件中的行数吗?我们将为您提供几种不同的方法来做到这一点。计算行数可以提供有关给定文件大小的信息。
为什么要计算文件中的行数?
与所有计算机文件一样,Linux 文件有不同的大小。有些文件很大,有些文件很小。 Linux 用户经常需要检查文件大小来管理系统磁盘空间并避免存储空间不足。一种方法是计算文件的行数,尽管是粗略的。正如书本的厚度通常表示其长度一样,文件中的行数在某些情况下可以让您相对了解其大小。
出于多种原因,计算文件的行数很有用。您可以验证文件的格式或结构。它还可以测量文本文件(例如源代码文件、配置文件或日志文件)的大小和复杂性。
行计数可以帮助您过滤和分析其他命令的输出。例如,可以分析系统日志文件中的行数。这将帮助您检查系统日志文件中存在的错误的大致数量。
行数还可以让您估计目录中的总项目数。通过随着时间的推移计算文件中的行数,您可以跟踪文件的更改,例如行的添加或删除。这对于调试软件或跟踪文档的更改非常有用。
如何计算 Linux 上文件的行数
Linux 提供了多种命令和工具,可以轻松计算出文件中有多少行。其中一些命令是 wc、sed、grep 和 awk。 Bash 脚本还可以帮助计算文件中的行数。我们将通过一个示例来探讨每种方法。
1. 使用 wc 计算文件中的字数、行数和字符数
您想要一种简单的方法来计算文件中的行数吗?只需使用 wc 命令即可。此命令输出文件中的字数、行数和字符数。
让我们考虑一个示例文件 example.txt。该文件包含一些初学者 Linux 命令的列表:
要计算名为 example.txt 的指定文件的行数,请使用 wc 命令添加 -l 标志,后跟文件名:
wc -l example.txt
上面的输出仅显示行数。要获取有关该文件的详细信息,请使用不带任何选项的 wc 命令。 wc 命令不带标志,将在单个命令中打印文件的字数、行数和字符:
wc example.txt
现在,假设您有三个文件,分别名为 example.txt、new.txt 和 new1.txt。要计算多个文件的行数,只需使用 wc 命令和 -l 选项,后跟文件名。
wc -l example.txt new.txt new1.txt
wc 命令还可以显示目录中存在的所有文件的行数。为此,请使用带有 -l 选项的 wc 命令,后跟星号运算符。
wc -l *
与上述所有情况一样,输出显示文件名以及行数。要显示不带文件名的行数,请运行:
wc -l < example.txt
此处,wc 命令使用输入重定向。这会将示例文件的内容提供给 wc 命令。然后它直接计算行数而不显示文件名。
计算文件行数的另一种方法是使用 wc -l 命令通过管道传输 cat 命令的输出。
cat example.txt | wc -l
2. 使用 sed 统计并显示文件的行数
sed 命令或流编辑器是 Linux 上文本操作的重要命令行工具。它对文件执行各种操作,例如插入、删除、替换或附加文本。 sed 命令从文件或标准输入中获取输入。
sed 命令还可以统计指定文件的总行数。它可以采用不同的参数来打印行号。
运行带有 -n 选项和等号的 sed 命令,以按顺序计数并在单独的行上显示行号。
sed -n '=' example.txt
有时,获取总行数比检索文件中每行的单独行号更有效。带有选项-n和$=的sed命令可以计算并显示文件中的总行数。 $= 表示文件的最后一行。它确保仅将行号打印到标准输出。
要获取文件中的总行数,请使用:
sed -n '$=' example.txt
3.使用grep统计文件行数
grep 命令专门用于搜索文件内的模式。不仅如此,它还可以为我们提供与定义的模式相对应或不相对应的行的总数。定义的模式是一个正则表达式,指定要搜索的内容。
如果不指定文件,grep 将从标准输入中读取。
使用 grep 命令添加 -c 标志来确定与特定模式匹配的行数。例如,要计算文件中包含单词“Command”的行数,请运行:
grep -c Command example.txt
还可以过滤并轻松计算不包含特定单词或模式的行。
为此,请在 grep 中使用 -v 标志:
grep -c -v awk example.txt
还有另一种带有点和星号的正则表达式模式(“.*”)。它匹配任意字符出现零次或多次的任何行。与上面两个命令不同,它不查找特定的单词。它只是计算并输出 example.txt 中包含一个或多个字符的行数。
grep -c ".*" example.txt
-c 标志确保仅显示行数,而不显示与模式匹配的实际行内容。
要在上面的输出中添加文件名,只需包含 -H 标志:
grep -Hc ".*" example.txt
4. 使用 awk 打印文件中的总行数
awk 命令用于文本处理以及作为数据提取和报告的工具。它在模式匹配以及处理字段和记录方面尤其强大。
您可以使用 awk 命令来计算文件中的行数。它使用AWK编程语言来打印文件中的总记录数(行数)。
awk 'END {print NR}' example.txt
给定的 awk 脚本 END {print NR} 在处理完 example.txt 文件中的所有行后执行。该脚本指示 awk 打印 NR 的值,该值表示处理的记录(行)总数。
5. 使用 nl 命令列出文件中的行并计算行数
nl 命令将行号添加到指定的文件内容中。它对于查看或打印带有行号的文件很有用。您可以使用带文件名的 nl 命令来计算指定文件中的行数。
nl example.txt
此命令将显示 example.txt 文件中的行号和行内容。
但是,这并不是获取文件行数的有效方法,尤其是对于大文件。它涉及额外的输出处理和渲染,这对于计数行的特定任务来说不是必需的。想象一个包含数千行的文件,您必须一直向下滚动才能获得总行数。
如果您想知道总行数而不需要任何其他信息,请使用 tail 和 awk 通过管道传输 nl 命令的输出。
nl example.txt | tail -1 | awk '{print $1}'
nl 命令在每行的开头添加行号。然后 nl 命令的输出通过 tail 命令进行管道传输,该命令显示输入的最后一行。 -1 选项告诉 tail 命令只显示一行。到目前为止,您已得到输出“10 uname Command”。
接下来,将此输出作为 awk 命令的输入,该命令打印输入中的特定字段。 {print $1} 参数告诉 awk 命令打印第一个字段,即行号。例如,如果输入是“10 uname Command”,则 awk 命令将打印第一个字段,在本例中为行号 10。
6. 使用 Bash 脚本计算文件的行数
Bash 脚本是 Linux 系统上的一个方便的工具,通常用于自动执行任务。您还可以使用它来计算文件中的行数。您可以编写自定义 Bash 脚本,该脚本使用 wc 命令来打印文件的行数:
#!/bin/bash
filename=$1
linecount=$(wc -l < "$filename")
echo "The file $filename has $linecount lines."
此 Bash 脚本使用带有 -l 标志的 wc 命令。 wc 命令获取行数并将其存储在 linecount 变量中。在脚本末尾,一条消息将回显到终端,显示文件名及其相应的行数。
要使用上面的脚本,只需将其保存为扩展名为“.sh”的文件 (count_lines.sh) 并使用 chmod 使其可执行:
chmod +x count_lines.sh
现在,使用 ./ 符号后跟脚本名称来运行脚本:
./count_lines.sh example.txt
您将获得标准输出文件 example.txt 的总行数。
彻底了解您的 Linux 文件系统
在 Linux 上,了解系统上的文件非常重要。与计算行数一样,计算目录中的 Linux 文件也可以帮助您更有效地管理系统。这将帮助您了解哪些文件占用了最多的空间、要删除哪些文件以及要保留哪些文件。
了解 Linux 文件结构也很重要。考虑 Linux 文件的主要支柱——索引节点。如果你的系统中没有这些,你将会度过艰难的一天。它们的数量非常有限,并且在您的系统中存储关键数据。
了解这些不仅可以帮助您管理和执行任务,还可以简化系统维护任务。