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

时间:2015-02-04 12:02:18

标签: unix vi

我想使用vi编辑器复制几行屏幕。从行号xxxx到行号zzzzz的任何内容。

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

2 个答案:

答案 0 :(得分:2)

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

:X,Zy

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

实施例

复制第3至500行:

:3,500y

要插入您想要复制副本行的之后行,然后点击p(更低' P')。

如果您想在特定行中插入行,请点击P(上方' P')。

答案 1 :(得分:1)

如果您想在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&gt;一个

然后,我们产生输出:

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