With awk
:
gpg --import "public.key" | awk -F '[ :]' 'NR==1 {print $4; exit}'
-F '[ :]'
sets the field delimiter as space or :
NR==1
matches the first line, {print $4; exit}
prints the 4th field (desired field), and then exit
s
If gpg
is output-ing to STDERR:
gpg --import "public.key" |& awk -F '[ :]' 'NR==1 {print $4; exit}'
For an older bash
:
gpg --import "public.key" 2>&1 | awk -F '[ :]' 'NR==1 {print $4; exit}'
Example:
% cat file.txt
gpg: key LOL12345: public key "John Doe (Developer) <john@doe.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: key LOL12345: secret key imported
gpg: key LOL12345: "John Doe (Developer) <john@doe.com>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
% awk -F '[ :]' 'NR==1 {print $4; exit}' file.txt
LOL12345