文字列のペアの間に最初に表示されるテキストを印刷するには? [コピー]

文字列のペアの間に最初に表示されるテキストを印刷するには? [コピー]

2つのデジタル証明書を含むファイルの一部をフィルタリングしようとしています。デフォルトでは、最初の部分(Cert1と仮定)は必要ですが、2番目の部分(Cert2)は望ましくありません。

ファイルの内容は次のとおりです。

-----BEGIN CERTIFICATE-----
AAAA
AAAA
ETC
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AAAA
AAAA
ETC
-----END CERTIFICATE-----

私はこれが私にCert1の内容を提供するという印象を受けました。(最初のBEGINと最初のENDの間の最初の部分):

cat /etc/nginx/cert.pem | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

しかし、何らかの理由で、2番目のBEGINと2番目のENDの間のすべての内容が引き続き表示されます。(基本的には何も変わりません。すべてが同じです。)

どんなアドバイス?

ベストアンサー1

ほぼすべて来ました:

sed -ne '
   /-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p      # got the range, ok
   /-END CERTIFICATE-/q                            # bailing out soon as the cert end seen
' /etc/nginx/cert.pem

ただし、証明書の開始タグと終了タグの行も出力の一部です。

おすすめ記事