一致する2つのパターン間の線を探しています。開始または終了パターンが欠落している場合、その行は印刷されません。
正しい入力:
a
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****
b
出力は次のとおりです
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****
ここで、入力からENDパターンが欠落していると仮定します。
a
***** BEGIN *****
BASH is awesome
BASH is awesome
b
行を印刷しないでください。
私はsedを試してみました。
sed -n '/BEGIN/,/END/p' input
ENDモードがない場合は、最後の行まですべてのデータを印刷します。
どうやって解決しますか?
ベストアンサー1
次のようにこれを行うことができます。
$ sed -e '
/BEGIN/,/END/!d
H;/BEGIN/h;/END/!d;g
' inp
どのように機能するかは、行の始まり/終わりの範囲に対してストレージスペースに保存することです。次に、END行が出るまで削除します。この時、私たちは私たちが持っているものが何であるかを思い出させます。 OTW、私たちは何も得ません。 HTH。