コンテキスト: 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