このコマンドを実行すると、次のKeygrip値が表示されますが、値は2です。 「sec」セクションになければならない最初のKeygrip値(0FCB25C3D73CC979F7732F5690E958A580D873B9)をどのように取得しますか?
root $> gpg --with-keygrip --list-secret-keys F9211C72F41103B4
sec rsa2048 2020-08-19 [SC]
BC777712D75642B7F3D50980F6031C73F46103B4
Keygrip = 0FCB25C3D73CC979F7732F5690E958A580D873B9 //<-- how to get this one
uid [ultimate] Kalib Zen (Backup Key) <[email protected]>
ssb rsa2048 2020-08-19 [E]
Keygrip = 75DECACEB6DDDDDDDDDDDDDDDD28392832323232
ベストアンサー1
gpgコマンドの出力を下のgrep /sed/awkコマンドにパイプします。
GNU grep
有効なPCREエンジンを使用して(-P
)、一致する部分のみを選択し(-o
)、最初の一致する部分のみを取得します(-m1
)。\K
線に含まれていない部分を避けるために使用されます。
grep -Pom1 '^ *Keygrip += +\K.*'
GNU sed
Gnu固有のT
リバーステストコマンド設定の使用
sed -Ene 's/^ *Keygrip += +//;T;p;q'
###Or Posixly,
sed -e '/^ *Keygrip *= */!d;s///;q'
フィールド区切り文字を「one_or_more_spc = one_or_more_spc」に設定し、awk
最初のフィールドが適切で、行に正確に2つのフィールドがあることを確認してから、2番目のフィールドを印刷します。
awk -F' += +' '
/^ *Keygrip / && NF==2 {
print $2;exit
}'