在 Bash 中跳过前 X 行后打印文件
假设你有一个文件,一个很大的文件,你想显示它的内容。 你会怎么做?
您显然不希望打印出文件的全部内容,因为这不太实用。 您可能想要打印一些选择性的行; 也许你会使用正则表达式来解析文件并只打印匹配项。
本文将解释几种方法。
使用 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 行后显示旧文件的内容。
相关文章
批处理脚本中的 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 浏览次数:136 分类:操作系统
-
我们将讨论所有的方法和可能性。 本教程将讨论从批处理文件中的变量中删除双引号。在批处理文件中使用波浪字符删除双引号
在批处理脚本中将文件读入变量
发布时间:2023/05/19 浏览次数:174 分类:操作系统
-
本文将向我们展示如何将整个文件内容放入一个变量中,此外,我们还将看到一个示例和解释,以使该主题更容易理解。使用FOR循环批量读取变量中的文件
Batch 检查指定的环境变量是否包含子字符串
发布时间:2023/05/19 浏览次数:108 分类:操作系统
-
本文讨论如何使用 Batch 命令来测试某个环境变量是否包含特定的子字符串。 我们将介绍可以在上述场景中使用的两个批处理脚本。检查指定的环境变量是否包含子字符串