2つの特定の行の間のテキストを消去し、Bashに新しい値を追加します。

2つの特定の行の間のテキストを消去し、Bashに新しい値を追加します。

私は直接台本を書いています。しかし、私はあなたの助けが必要です。

次のファイル(test.md)があります。

sometext
sometext

<!--SEPERATOR1-->
text to be deleted
foobar to be deleted
foooooooooooobar
foobaaaaaaaaaaar
<!--SEPERATOR1-->

sometext
sometext

このテキストファイル(test.md)で、「SEPERATOR1」で区切られたセクションのテキストを整理して新しいテキストを追加したいと思います。どうすればいいですか?ありがとうございます。

予想出力:

sometext
sometext

<!--SEPERATOR1-->
new text
butterfly
foo bar etc.
<!--SEPERATOR1-->

sometext
sometext

ベストアンサー1

sed以下を使用して範囲を指定してテキストを変更できます。/startpattern/,/endpattern/c

sed '/<!--SEPERATOR1-->/,/<!--SEPERATOR1-->/c<!--SEPERATOR1-->\nnew text\nbutterfly\nfoo bar etc.\n<!--SEPERATOR1-->' filename.txt

\n結果の改行に使用されます。

> newfilename.txt最後に追加して出力をファイルにリダイレクトするか、フラグを追加してファイル-iをその場で変更できます(たとえ正確な構文sedバージョン)。

ただし、「従来の」スペルを使用している他の人が後でコードを維持する必要がある場合(たとえば、以前のバージョンのコードなど)SEPERATORに変更することを提案することもできます。SEPARATOR

おすすめ記事