「grep」を使ってgpgキーフィンガープリント値を取得するには?

「grep」を使ってgpgキーフィンガープリント値を取得するには?

出力gpg --list-secret-keys --keyid-format=long

pub   rsa3072 2023-01-13 [SC] [expires: 2025-01-12]
  D8524A558964E86Cxxxx93111270xxxxxxxx7A74
uid           [ultimate] demo(demo) <demo>
sub   rsa3072 2023-01-13 [E] [expires: 2025-01-12]

出力から「D8524A558964E86Cxxxx93111270xxxxxxxx7A74」のみをgrepするにはどうすればよいですか?私はLinuxを使用しています。

ベストアンサー1

マニュアルページから:

スクリプトや他のプログラムでこのコマンドの出力を使用しないでください。出力は人が使用するためのものであり、形式は異なる場合があります。 --with-colonsオプションは、スクリプトや他のプログラムで利用可能な安定した機械分析が可能な形式で出力をエクスポートします。

--with-colons
コロンで区切られたキーのリストを印刷します。 --display-charset 設定に関係なく、出力は UTF-8 でエンコードされます。この形式はコンピュータで簡単に解析できるため、スクリプトや他のプログラムからGnuPGを呼び出すときに便利です。この形式の詳細は、GnuPGソースディストリビューションに含まれている「doc / DETAILS」ファイルに文書化されています。

doc/DETAILS最新情報を見つけることができますそこ例えば。

だから:

gpg --list-secret-keys --with-colons |
  awk -F: '$1 == "fpr" || $1 == "fp2" {print $10}'

そこにリストされているすべてのキーの指紋を印刷します。

--keyid-formatお好みの指紋なので関係ありません。)

おすすめ記事