如何从 Unix 上的文本文件中提取预定范围的行?

问题描述

sed -n '16224,16482p;16483q' filename > newfile

sed 手册

- 打印出模式空间(到标准输出)。此命令通常仅与 -n 命令行选项一起使用。

- 如果未禁用自动打印,则打印模式空间,然后无论如何用下一行输入替换模式空间。如果没有更多输入,则 sed 退出,不再处理任何命令。

- 退出sed而不处理任何更多的命令或输入。请注意,如果未使用 -n 选项禁用自动打印,则会打印当前模式空间。

sed 脚本中的地址可以是以下任何一种形式:

指定行号将仅匹配输入中的该行。

可以通过指定用逗号 (,) 分隔的两个地址来指定地址范围。地址范围匹配从第一个地址匹配的位置开始的行,并一直持续到第二个地址匹配(包括)。

解决方法

我有一个约 23000 行的 SQL
转储,其中包含几个数据库的数据。我需要提取该文件的某个部分(即单个数据库的数据)并将其放入一个新文件中。我知道我想要的数据的开始行号和结束行号。

有谁知道一个 Unix 命令(或一系列命令)从一个文件中提取所有行,比如第 16224 行和第 16482 行之间的行,然后将它们重定向到一个新文件中?