Contents

在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

我们可以看到该命令已经打印了行号和内容。请注意,这种方法在处理大文件时是不切实际的