以下のファイルがあります。
~PAR1~
This is Par1 line 1
This is Par1 line 2
Par Finished
~PAR2~
This is Par2 line 1
This is Par2 line 2
Par Finished
を通過すると、との間のすべての行を取得する必要がPAR1
あります。どうやって入手できますか?調査中ですが、オプションが見つかりません。PAR1
Par Finished
awk
sed
ベストアンサー1
ヘッダーとフッター行が必要な場合は簡単ですsed
。
sed -n "/^~PAR1~$/,/Par Finished/p"
変数で使用するのは簡単です。
START=PAR1
sed -n "/^~$START~$/,/Par Finished/p"
最後の行を変数にすることもできます。
START=PAR1
END="Par Finished"
sed -n "/^~$START~$/,/$END/p"
結果は次のとおりです。
~PAR1~
This is Par1 line 1
This is Par1 line 2
Par Finished
これで、開始/終了行を必要とせず、空行も必要としないと、状況がより複雑になります。
おそらくより良い方法があります。しかし、これは私にとって効果的です。
sed -n "/^~$START~$/,/$END/ { /^~$START~$/d ; /$END/d ; /^$/d ; p }"
これの結果は
This is Par1 line 1
This is Par1 line 2