linux - 从错误中复制最后一个词并输入到下一个命令

标签 linux redirect gnupg

有点模糊的标题,但基本上我需要做的是从这个错误消息中复制公钥:

W: GPG error: http://ppa.launchpad.net hardy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EED4D034D81367B9

并将其用作脚本其余部分的值以修复错误。我查看了如何使用 Grep、awk、sed 和其他一些工具来执行此操作,但它们都涉及从文件读取输入,而不是从标准输出中读取内联。

如有任何帮助,我们将不胜感激!

最佳答案

您可以结合使用 bash 工具和 xargs 来实现这一点。假设您从命令中收到错误字符串,您可以使用 波浪号 (=~) 运算符将其通过管道传输到 bash 中的 regEx

.*\ ([[:alnum:]]+)$ 

即使用此 regEx 对字符串进行简单的 echo 您将获得所需的键值。在命令行运行以下命令

$ echo "W: GPG error: http://ppa.launchpad.net hardy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EED4D034D81367B9" | while IFS= read -r line; do [[ $line =~ .*\ ([[:alnum:]]+)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"; done
EED4D034D81367B9

即形式

$ <command-returning-string> | while IFS= read -r line; do [[ $line =~ .*\ ([[:alnum:]]+)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"; done

现在正如您所说,您想将此 key 传递给管道中的另一个命令。现在 xargs 来拯救了。使用 xargs 中的 -I{} 标志,{} 成为从上一个命令返回的 key 的占位符,即 key 是现在出现在 {} 中,可以作为参数/输入传递给您的下一个命令作为

$ <command-returning-string> | <command-returning-key> | xargs -I{} <your-next-command> {}

关于linux - 从错误中复制最后一个词并输入到下一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000960/

相关文章:

git - 使用 format-patch 在 git 补丁中保留 gpg 签名

python - 如何使 GnuPG key 与 Pycrypto 兼容

php - linux中使用xampp和wordpress的权限

linux - 实时 Linux 扩展已经过时了吗?

javascript - 通过 javascript/php 重定向移动/桌面用户

php - 重定向与 WooCommerce 购物车计数条件冲突

command-line-interface - 如何在 CLI 上让 gpg 提示输入密码

mysql - Docker 无法通过 socket '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2) Ubuntu

java - 使用java远程登录linux系统

webserver - Lighttpd:将域重定向到新域,包括路径