当我导入我的GPG密钥时,我收到了回复:
gpg: key LOL12345: public key "John Doe (Developer) <john@doe.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
我非常想提取密钥的ID LOL12345
。
我运行的返回输出的命令如下:
gpg --import "public.key"
答案 0 :(得分:1)
尝试使用grep:
yourCommand | grep -Po -m 1 'gpg: key \K\w+'
-P
使用perl正则表达式。
-o
仅打印匹配的部分。
第一场比赛后-m 1
退出。这将确保密钥不会多次打印
\K
匹配后,忘记\K
左侧的匹配部分
\w+
匹配尽可能多的字母数字字符。
答案 1 :(得分:1)
使用awk
:
gpg --import "public.key" | awk -F '[ :]' 'NR==1 {print $4; exit}'
-F '[ :]'
将字段分隔符设置为空格或:
NR==1
匹配第一行,{print $4; exit}
打印第4个字段(所需字段),然后exit
s
如果gpg
输出到STDERR:
gpg --import "public.key" |& awk -F '[ :]' 'NR==1 {print $4; exit}'
对于年龄较大的bash
:
gpg --import "public.key" 2>&1 | awk -F '[ :]' 'NR==1 {print $4; exit}'
示例:强>
% 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