迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

在 Bash 中跳过前 X 行后打印文件

作者:迹忆客 最近更新:2023/05/18 浏览次数:

假设你有一个文件,一个很大的文件,你想显示它的内容。 你会怎么做?

您显然不希望打印出文件的全部内容,因为这不太实用。 您可能想要打印一些选择性的行; 也许你会使用正则表达式来解析文件并只打印匹配项。

本文将解释几种方法。


使用 head 和 tail 命令跳过行

下面的示例使用五个最常用的 Bash 命令来执行此操作:

tail fileName.txt
head fileName.txt
tail -n fileName.txt # here n is an integer
head -n fileName.txt # here n is an integer
tail +n fileName.txt # prints all lines starting from
# the nth file

tail 命令的作用是打印文件的最后十行,而 head 命令打印文件的前十行。

当您使用带有 –n 选项的 tail 命令时,它会打印最后 n 行。 相反,当您使用带有 –n 选项的 head 命令时,它会打印前 n 行。

重要的是要注意这里的 n 是一个整数,因此当您执行命令时,您必须将 n 替换为一个整数。

第五个方法有点棘手。 它忽略前 (n – 1) 行并打印其后的所有行。


使用 vim 跳过前 n 行

您也可以使用 Vim 编辑器跳过前 n 行。 Vim 是一个基于控制台的文本编辑器,允许您高效地创建和更改任何文本文档。

要首次使用 Vim,您必须安装它。 使用以下命令执行此操作:

$ sudo apt install vim

现在已经安装了 Vim,我们进入了目的的业务部分,即使用 Vim 跳过前 n 行。

我们将通过使用中间文件来完成。 我们首先将旧文件的内容复制到新文件中; 然后,我们将删除新文件的前 n 行。

我们将使用输入和输出重定向将一个文件的内容复制到另一个文件。 如果学过操作系统课程,应该听说过ppfdt表(进程文件描述符表)。

默认情况下,第一个描述符指向 stdin(或键盘),第二个描述符指向 stdout(或监视器),第三个描述符指向 stderror。

考虑下面的脚本以进一步理解。

cat 0<old_file.txt 1>new_file.txt # copies old file’s contents to new file

上面的命令读取旧文件的内容并将其复制到新文件中。 请注意我们如何使用描述符 0 来读取和使用描述符 1 来写入。

如果您觉得这个描述符令人困惑,我们为您准备了一些不同的东西。 以下命令也可以使用:

cat <old_file.txt >new_file.txt # copies old file’s contents to new file
cp <old_file.txt >new_file.txt # copies old file’s contents to new file

请注意 ,在上面的第二种方法中,我们使用了复制命令(即 cp)。 它有两个参数:源文件的路径和目标文件的路径。

现在我们已经完成了文件的复制。 在 Vim 中打开新文件并使用以下命令:

vim new_file.txt

现在使用 Shift+Esc 并在 Vim 中键入以下命令:

:1,nd # here n is an integer number e.g., 2

上面的命令删除了 new_file.txt 中的前 n 行。 这里,d代表删除。


使用 sed 跳过前 n 行

创建一个新文件然后删除其内容可能很麻烦。 此外,如果旧文件很大,它也会消耗大量额外的内存。

所以,让我们看一个更简单的方法来实现同样的目的:

sed 1,nd old_file.txt # here n is an integer

重要的是要注意 sed 命令不会修改旧文件。 相反,它只会在删除前 n 行后显示旧文件的内容。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

批处理脚本中的 For 循环

发布时间:2023/05/19 浏览次数:103 分类:操作系统

本篇文章将介绍如何在批处理脚本中使用 FOR 循环。循环用于连续执行特定任务,直到达到程序员指定的次数。 这个 FOR 循环有不同的版本。

批处理脚本中的 For \F

发布时间:2023/05/19 浏览次数:151 分类:操作系统

本文将讨论在批处理脚本中使用 FOR /F 循环。在批处理脚本中使用 FOR /F 循环 此类 FOR 循环的一般格式如下所示:

批处理文件循环遍历子目录中的文件

发布时间:2023/05/19 浏览次数:163 分类:操作系统

本文说明了我们如何编写一个批处理脚本来循环遍历子目录中的文件。 我们将举一个例子来解释这个概念。批处理文件循环遍历子目录中的文件

批处理文件删除文件名的 X 个字符

发布时间:2023/05/19 浏览次数:136 分类:操作系统

本文说明了我们如何使用批处理脚本从文件的文件名中删除特定字符。 我们将在下面介绍在 Windows 上重命名文件的几种方法。Windows 上的文件资源管理器重命名

在批处理脚本中声明变量

发布时间:2023/05/19 浏览次数:69 分类:操作系统

本文将演示如何在批处理脚本中声明和定义变量。在批处理脚本中声明变量。在 Batch 中,不需要使用任何其他关键字来声明整数、浮点数、双精度或字符串类型变量。

在批处理脚本中将文件读入变量

发布时间:2023/05/19 浏览次数:174 分类:操作系统

本文将向我们展示如何将整个文件内容放入一个变量中,此外,我们还将看到一个示例和解释,以使该主题更容易理解。使用FOR循环批量读取变量中的文件

Batch 检查指定的环境变量是否包含子字符串

发布时间:2023/05/19 浏览次数:108 分类:操作系统

本文讨论如何使用 Batch 命令来测试某个环境变量是否包含特定的子字符串。 我们将介绍可以在上述场景中使用的两个批处理脚本。检查指定的环境变量是否包含子字符串

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便