複数の証明書を含むファイルがあります。
-----BEGIN CERTIFICATE-----
AAAAAAA
AAAAAAA
AAAAAAA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
BBBBBBB
BBBBBBB
BBBBBBB
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CCCCCCC
CCCCCCC
CCCCCCC
-----END CERTIFICATE-----
A
B
C
中に文字があるのをカットしてただ…n
証明書だけを受けたいです。
それは非常に似ていますこの問題これを行うためのポータブルな方法があればと思います。sed
可能であれば一緒に使用することをお勧めしますが、awk
不可能な場合は使用可能ですsed
。
最初の出現以外の特定の値までsedを印刷する方法はありますか?
ベストアンサー1
入力が正しい形式の証明書ファイルである場合(例のように)、私が考える最も簡単な方法は、次のコマンドを使用することですawk
。
awk '$0=="-----BEGIN CERTIFICATE-----" {n++} n>1' test.cert
n
これは、現在の行()が「開始パターン」と正確に一致するたびに$0
カウンタ変数をインクリメントします。 「見えない」ブール式がn>1
trueの場合、つまり開始パターンの2番目の発生から始まると、現在の行が印刷されます。awk
初期化されていない変数は0(または使用状況に応じて空の文字列)として扱われるため、n
セクションで明示的に初期化する必要はありません。0
BEGIN
入力文書が破損すると、状況がより複雑になります。言い換えれば、終了パターンに誤って一致する開始パターンが含まれている場合、またはその逆の場合も同様です。