如何从开始和结束模式(不包括开始和结束模式)复制一系列行并将其粘贴到同一文件的第三个模式中

如何从开始和结束模式(不包括开始和结束模式)复制一系列行并将其粘贴到同一文件的第三个模式中

原始文件

.
.
. 
startpattern
   text to copy 1
   test to copy 2
endpattern
.
.
.
thirdpattern

结果文件

.
.
. 
startpattern
   text to copy 1
   test to copy 2
endpattern
.
.
.
thirdpattern
   text to copy 1
   test to copy 2
.
.
.

答案1

对于可编写脚本的编辑器来说,这似乎非常简单ed。核心命令是:

/startpattern/+1, /endpattern/-1 t /thirdpattern/

您可以使用命令行更改文件:

printf '%s\n' '/startpattern/+1, /endpattern/-1 t /thirdpattern/' w q | ed -s filename

...它将三个命令通过管道传输ed到 的输入缓冲区中:main 命令、write 命令和quit 命令。

您将/应该收紧每个模式上的正则表达式,以确保您捕获正确的行。前两个模式上的 +1 和 -1 向前和向后调整匹配以排除具有这两个模式的行。

相关内容