With awk:
gpg --import "public.key" | awk -F '[ :]' 'NR==1 {print $4; exit}'
- -F '[ :]'sets the field delimiter as space or- :
 
- NR==1matches the first line,- {print $4; exit}prints the 4th field (desired field), and then- exits
 
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