「スタートモード」 - 「ストップモード」ペアが最初に発生した後にテキストを印刷するにはどうすればよいですか?

「スタートモード」 - 「ストップモード」ペアが最初に発生した後にテキストを印刷するにはどうすればよいですか?

複数の証明書を含むファイルがあります。

-----BEGIN CERTIFICATE-----
AAAAAAA
AAAAAAA
AAAAAAA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
BBBBBBB
BBBBBBB
BBBBBBB
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CCCCCCC
CCCCCCC
CCCCCCC
-----END CERTIFICATE-----

AB C中に文字があるのをカットしてただ…n証明書だけを受けたいです。

それは非常に似ていますこの問題これを行うためのポータブルな方法があればと思います。sed可能であれば一緒に使用することをお勧めしますが、awk不可能な場合は使用可能ですsed

最初の出現以外の特定の値までsedを印刷する方法はありますか?

ベストアンサー1

入力が正しい形式の証明書ファイルである場合(例のように)、私が考える最も簡単な方法は、次のコマンドを使用することですawk

awk '$0=="-----BEGIN CERTIFICATE-----" {n++} n>1' test.cert 

nこれは、現在の行()が「開始パターン」と正確に一致するたびに$0カウンタ変数をインクリメントします。 「見えない」ブール式がn>1trueの場合、つまり開始パターンの2番目の発生から始まると、現在の行が印刷されます。awk初期化されていない変数は0(または使用状況に応じて空の文字列)として扱われるため、nセクションで明示的に初期化する必要はありません。0BEGIN

入力文書が破損すると、状況がより複雑になります。言い換えれば、終了パターンに誤って一致する開始パターンが含まれている場合、またはその逆の場合も同様です。

おすすめ記事