一致する条件の間でファイルのテキストの一部を抽出する方法

一致する条件の間でファイルのテキストの一部を抽出する方法

以下のファイルがあります。

~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あります。どうやって入手できますか?調査中ですが、オプションが見つかりません。PAR1Par Finishedawksed

ベストアンサー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

おすすめ記事