在Bash中计算文件中的行数
1. 概述
有时,我们想检查给定文件的大小。给定文件的总行数有助于我们了解该文件的大小。Linux 与任何其他操作系统一样,为我们提供了几种完成任务的方法。
在本教程中,我们将了解使用 Bash计算指定文件行数的最常用方法。
2. 设置
对于这个快速教程,我们将使用一个名为programming.txt的文本文件,其中包含一些当今使用的顶级编程语言:
$ cat programming.txt
JavaScript
Java
C
Python
C#
PHP
C++
Go
R
Ruby
如果我们手动计算行数,我们将得到 10。随着行数的增加,手动计算将变得令人厌烦且难以实现。使用各种终端命令可以轻松获取总行数。
3. wc
*wc *命令用于查找文件的行数、字符数、字数和字节数。
要使用wc查找行数,我们添加*-l选项。*这将为我们提供总行数和文件名。
让我们使用wc -l命令检查文件的行数:
$ wc -l programming.txt
10 programming.txt
从输出中,我们可以看到它打印了数字 10,表示总行数,以及文件名,即programming.txt。
我们可以告诉shell将programming.txt文件重定向到wc -l命令的标准输入。这将为我们提供没有文件名的行数。
$ wc -l < programming.txt
10
使用wc执行此操作的另一种常见方法是使用cat 并将文件通过管道传输到命令:
$ cat programming.txt | wc -l
10
4. sed
*sed *是一个流编辑器,用于执行输入文件的基本文本转换。此命令主要用于查找和替换功能。我们还可以使用它来查找指定文件的行数。
sed可以接收不同的参数以打印行号。
4.1. sed -n ‘=’
我们可以使用sed、-n选项和等号 (’=’) 的组合。该命令将打印没有文件内容的行号:
$ sed -n '=' programming.txt
1
2
3
4
5
6
7
8
9
10
从结果中,我们可以看到该命令只打印了行数。但是,这种方法对大文件效率不高。
4.2. sed -n ‘$=’
大多数时候,我们更喜欢只获得总行数。sed通过使用*-n* 选项和*’$=’*参数来派上用场。该命令的输出是文件最后一行的编号:
$ sed -n '$=' programming.txt
10
5. awk
awk 命令将每一行视为一条记录。然后**可以使用awk的内置NR变量在END部分打印**行数:
$ awk 'END { print NR }' programming.txt
10
6. cat
cat 命令将传递给它的文件作为参数连接起来,并打印在标准输出上。这是最常用的命令之一。*使用带有-n选项的cat*命令打印文件内容及其行号**:
$ cat -n programming.txt
1 JavaScript
2 Java
3 C
4 Python
5 C#
6 PHP
7 C++
8 Go
9 R
10 Ruby
我们可以看到该命令已经打印了行号和内容。请注意,这种方法在处理大文件时是不切实际的。