開始パターンと終了パターン(開始パターンと終了パターンを除く)から一連の行をコピーして同じファイルの3番目のパターンに貼り付ける方法

開始パターンと終了パターン(開始パターンと終了パターンを除く)から一連の行をコピーして同じファイルの3番目のパターンに貼り付ける方法

オリジナルファイル

.
.
. 
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メインコマンド、writeコマンド、quitコマンドの3つのコマンドを入力バッファにパイプします。

正しい行をキャプチャできるように、各パターンの正規表現を強化する必要があります。最初の2つのパターンの+1と-1は一致を前後に調整し、対応する2つのパターンがある行を除外します。

関連情報