私のfilename
ファイルの内容は次のとおりです(たとえば):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
私は間のラインのブロックを交換したいSTART
とEND
して、たとえば、1つだけの単語でSINGLEWORD
。以下のように:
My block of line starts from here
SINGLEWORD
and end to here for example.
次のコマンドを使用して、行ブロックを見つけることができます。
grep -Pzo "START(.|\n)*END" filename
上記のコマンドを実行した結果は次のようになります。
START
First line
second line
third line
END
次に、このコマンドを使用して、すべての行を1行に結合しました。
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
次に、この結果を取得します。
START First line second line third line END
そして、最後のコマンドでLAST_RESULTS | sed 's/.*/SINGLEWORD/'
それらをに変更すると"SINGLEWORD"
、この結果が得られます。
SINGLEWORD
今私が欲しいのは、どうすればこのコマンド(またはあなたの提案コマンド)を使用して、行のブロックを「SINGLEWORD」単語に置き換えることができますか?最終的な結果は次のファイルのようになります。
My block of line starts from here
SINGLEWORD
and end to here for example.
sed
は可能であるべきですが、おそらく読みにくい(この質問を見てください)