在 vi 编辑器中复制从行号 xxxxx 到行号 zzzzzz 的所有内容

copying everything from line number xxxxx to line number zzzzzz in vi editor

我想使用 vi 编辑器复制几行。从行号 xxxx 到行号 zzzzz.

的任何内容

然后,我想将这些行写入另一个文件。

在命令模式下(按 )键入:

:X,Zy

其中X是第一行,Z是最后一行。

例子

复制第 3 行到第 500 行:

:3,500y

要插入到要插入副本行的,然后点击p(下方'P')。

如果要在特定行之前插入行,请点击 P(上方 'P')。

如果您想在 vi 中执行此操作,则可以使用:

:XXX,ZZZy<enter>

但是,您似乎想将这些行存储在另一个文件中。那么,awk就派上用场了:

awk 'NR==XXX,NR==ZZZ' a > new_file

如果数字恰好是变量,就这样使用它们:

awk -v first="$first" -v last="$last" 'NR==first,NR==last' a > new_file

测试

让我们在文件 a 中打印一个由 50 个数字组成的序列,每个数字在不同的行中: $ seq 50 > a

然后,我们产生输出:

$ awk 'NR==5,NR==7' a > new_file
$ cat new_file
5
6
7