我有一个约 23000 行的 SQL 转储,其中包含几个数据库的数据。我需要提取该文件的某个部分(即单个数据库的数据)并将其放入一个新文件中。我知道我想要的数据的开始行号和结束行号。
有谁知道一个 Unix 命令(或一系列命令)从一个文件中提取所有行,比如第 16224 行和第 16482 行之间的行,然后将它们重定向到一个新文件中?
sed -n '16224,16482p;16483q' filename > newfile
从sed 手册:
p - 打印出模式空间(到标准输出)。此命令通常仅与 -n 命令行选项一起使用。 n - 如果未禁用自动打印,则打印模式空间,然后无论如何用下一行输入替换模式空间。如果没有更多输入,则 sed 退出,不再处理任何命令。 q - 退出sed而不处理任何更多的命令或输入。请注意,如果未使用 -n 选项禁用自动打印,则会打印当前模式空间。
p - 打印出模式空间(到标准输出)。此命令通常仅与 -n 命令行选项一起使用。
n - 如果未禁用自动打印,则打印模式空间,然后无论如何用下一行输入替换模式空间。如果没有更多输入,则 sed 退出,不再处理任何命令。
q - 退出sed而不处理任何更多的命令或输入。请注意,如果未使用 -n 选项禁用自动打印,则会打印当前模式空间。
sed
和
sed 脚本中的地址可以是以下任何一种形式: number 指定行号将仅匹配输入中的该行。 可以通过指定用逗号 (,) 分隔的两个地址来指定地址范围。地址范围匹配从第一个地址匹配的位置开始的行,并一直持续到第二个地址匹配(包括)。
sed 脚本中的地址可以是以下任何一种形式:
number 指定行号将仅匹配输入中的该行。
可以通过指定用逗号 (,) 分隔的两个地址来指定地址范围。地址范围匹配从第一个地址匹配的位置开始的行,并一直持续到第二个地址匹配(包括)。