이 명령을 실행하면 다음과 같은 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
첫 번째 필드가 적절하고 행에 정확히 두 개의 필드가 있는지 확인한 후 두 번째 필드를 인쇄합니다.
awk -F' += +' '
/^ *Keygrip / && NF==2 {
print $2;exit
}'