如何在 Linux 上轻松读取大文件

想要筛选大量日志文件、文本文件或数据集?你并不孤单。当您想要在不占用系统资源的情况下查看和管理内容时,在 Linux 上读取大文件可能会很困难。但是,您可以使用多种方法在 Linux 上读取大文件,例如使用less命令,为什么, 或者分割文档分成更小的块和其他块。

在本文中,我们将学习如何使用各种方法读取大文件或查找 Linux 上的特定信息。

使用更少的命令

正在寻找一个轻量级 Linux 工具来查看大型文本文件的内容或执行快速搜索?不用再犹豫了less命令。

我喜欢这个实用程序,因为与常规实用程序不同文本编辑器,它允许您一次一页地查看文件,而无需将整个文件加载到内存中。这使得速度更快,尤其是对于大文件,并帮助您轻松查看长文档或日志。

要使用它,只需输入less后跟文件名:

less filename.txt

这将打开 less 界面,您可以在其中使用箭头键逐行滚动文件或通过按搜索特定术语/接下来是您的查询。

您还可以使用less使用a读取其他命令的输出管道操作员。例如,读取并显示LS命令输出,使用:

ls -l | less

此外,less命令有几个选项来调整其行为。您可以组合这些选项来微调less作品。

例如,您可以使用-p选项与less搜索特定模式:

ls -l | less -p "sample"

此命令打开输出并跳转到该单词的第一次出现样本.

您还可以使用以下命令在文件内容旁边显示行号-N选项:

ls -l | less -N

使用分割命令分割文件

有时,将大文件分成较小的块是最好的方法 - 特别是当您想要在可管理的部分中处理或读取文件时。例如,当文件大小超过 1 GB 或包含超过 1 亿行时,我会将文件分割成块。

您可以按大小或行数拆分文件。如果您正在处理文本,最好按行分割,以避免将行或单词切成两半。

例如,要根据指定的行数拆分文件,请运行以下命令:

split -l 10000 samplefile.txt part_

在此示例中,文件“samplefile.txt”被拆分为多个文件,每个文件包含 10,000 行。生成的文件将被命名为“part_aa”、“part_ab”等。现在,您可以打开并读取较小的文件块,而不必担心内存使用或系统速度下降。

如果您想根据大小拆分大文件,例如 100 MB,可以运行以下命令:

split -b 100M samplefile.txt part_

使用午夜指挥官

午夜指挥官(MC) 是一个基于文本的双面板文件管理器,为导航目录和文件提供直观的可视化界面。

MC 允许您直接在界面中查看文件,使您可以快速滚动浏览大型日志或数据,而无需将整个文件加载到内存中。我喜欢 MC 的一点是它能够流畅、高效地滚动浏览大文件。

要安装 MC,只需运行:

sudo apt install mc

您可以通过运行来启动它mc在终端中。进入后,您可以导航到要读取的大文件并查看其内容。

使用克洛格

Klogg 是一个基于 GUI 的快速、开源日志查看器,可以轻松处理大型文件。与其他将整个文件加载到内存中的编辑器不同,它仅根据需要读取文件的部分内容,减少内存使用.

Klogg 还提供实时过滤和搜索功能,让您无需过度滚动即可轻松找到所需内容。

在安装Klogg之前,首先需要创建“/etc/apt/keyrings”目录并添加GPG密钥到它。 GPG 密钥是验证 Klogg 软件包存储库所必需的。

要创建目录,请运行:

sudo mkdir -p /etc/apt/keyrings

现在,添加 GPG 密钥:

curl -sS https://klogg.filimonov.dev/klogg.gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/klogg.gpg

接下来,您需要使用以下命令将 Klogg 存储库添加到您的系统中:卷曲命令:

curl -sS https://klogg.filimonov.dev/deb/klogg.jammy.list | sudo tee /etc/apt/sources.list.d/klogg.list

更新包列表:

sudo apt update

最后,您可以使用以下命令安装 Klogg:

sudo apt install klogg

安装后,只需通过界面打开文件并使用其内置功能来搜索和导航内容。

使用文本编辑器读取大文件

大多数文本编辑器都难以处理大文件,但 Vim 或 Emacs 等编辑器比标准编辑器(如纳米或者格编辑.

例如,Vim 的功能允许您快速跳转文件并搜索特定术语,而无需立即将所有内容加载到内存中。但是,搜索仅限于已加载的部分。

要在 Vim 中打开文件,请运行:

vim samplefile.txt

笔记:虽然 Vim 可以更有效地管理大文件,但它仍然不是最快的工具。为了快速浏览,使用less命令或前面提到的专用工具。

使用 Grep 命令搜索文件

如果您的目标是在大文件中查找特定信息,请尝试使用grep命令。它使您能够通过文件搜索并仅输出与您的搜索查询匹配的行。

当您将命令输出通过管道传输到less,这是暂时的——一旦你关闭less,输出消失了。如果您想保留输出供以后使用,请将其重定向到一个文件并使用命令行工具(如 less)打开它。

例如,要从大文件中打印包含单词“ERROR”的每一行,请运行:

grep "Error" samplefile.txt

您可以使用其他选项来优化搜索,例如忽略区分大小写(grep -i)或仅搜索整个单词(grep -w).

将输出重定向到文件

如果您想保存特定信息供以后使用,可以将命令的输出重定向到新文件。

例如,您可以使用以下命令搜索行grep命令并将它们保存到新文件中:

grep "Error" samplefile.txt > errors.log

>操作员每次都会创建一个新文件或覆盖它。但是,如果您想将数据附加到已存在的文件中,请使用>>而不是>操作员。

使用头尾命令

有时,在 Linux 上处理大文件时,您可能只需要查看文件的开头或结尾。为此,您可以使用head或者tail命令。

您可以使用以下命令显示文件的前 20 行:

head -n 20 samplefile.txt

同样,要查看最后 20 行,请运行:

tail -n 20 samplefile.txt

在这两种情况下,-n 20指定您只想查看前 20 行或最后 20 行。您可以调整此数字以根据需要显示更多或更少的行。默认情况下,这两个命令都显示 10 行。

您还可以组合tailhead浏览特定文件部分。例如,要查看 100 行文件的第 10-14 行,请通过从总行数中减去起始行减一来计算从末尾算起的起始行 (100 – 9 = 91)。然后,使用此命令:

tail -n 91 samplefile.txt | head -n 5

这将显示第 10-14 行。您可以通过将其与您看到的结果进行比较来确认输出less.

如果您正在监视不断更新的文件(例如日志文件),请使用 tail-f实时跟踪变化。

总结

无论您是筛选日志、处理数据集还是查看大型文本文件,这些方法都使过程变得简单高效。您还可以学习如何查找大文件在 Linux 上以及如何将它们转移到航站楼的另一个位置.

图片来源:未飞溅。所有修改和屏幕截图均由 Haroon Javed 完成。