テキストファイルから2つのキーワード間のテキストを削除する方法

テキストファイルから2つのキーワード間のテキストを削除する方法

コンテキスト: GNU/Linux Ubuntu。

数千行のファイルがあり、2つの特定のキーワードの間にあるいくつかの行を削除するスクリプトが必要です。
初期ファイルは次のとおりです。

bla bla
...
bla bla
keyword1
bla bla
...
bla bla
keyword2
bla bla
...
bla bla

keyword1との間の部分を除くすべてのファイルを維持したいと思いますkeyword2

考えてみて、keyword1ファイルkeyword2に一度だけ表示できます。これらのキーワードには、行の前後にスペースや<その他の文字を含めることができます。>

キーワードを含む行は次のとおりです(実際にはXMLベースのファイルです)。

<keyword2>  

キーワードはファイルに残ったり、添付のテキストと共に削除したり、両方の結果が満足です。

使い続ける方法がわかりませんgrep。よくわかりませんawk。動作しますか?

ベストアンサー1

サンプルテキストをファイルに入れ、fileキーワード<>を使用してテストしました。

このコマンドはsedキーワードを削除します

$ < file sed '/keyword1/,/keyword2/d'
bla bla
...
bla bla
bla bla
...
bla bla

このコマンドはsedキーワードを予約します

$ < file sed -n -e '1,/keyword1/p' -e '/keyword2/,$p'
bla bla
...
bla bla
<keyword1>
<keyword2>
bla bla
...
bla bla

おすすめ記事