我想从一个文本文件(yum repository文件)中提取一个特定的文件路径,文件内容如下
[rhel-8-for-x86_64-baseos-rpms]
name = Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
baseurl = https://myhost.com
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslclientkey = /etc/pki/entitlement/60472949067-key.pem
sslclientcert = /etc/pki/entitlement/604712349067.pem
metadata_expire = 1
enabled_metadata = 1
[rhel-8-for-x86_64-appstream-rpms]
name = Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
baseurl = https://myhost.com
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslclientkey = /etc/pki/entitlement/6047297349067-key.pem
sslclientcert = /etc/pki/entitlement/6047297349067.pem
metadata_expire = 1
enabled_metadata = 1
我的要求是通过命令行或脚本提取rhel-8-for-x86_64-appstream-rpm和rhel-8-for-x86_64-baseos-rpm的sslclinetkey路径
如有任何帮助,不胜感激
更新
我尝试了这种方式,但我得到了多个条目
cat /etc/yum.repos.d/redhat.repo | grep sslclientkey | awk '{print $3}'
/etc/pki/entitlement/2627848977587647846-key.pem
/etc/pki/entitlement/7675461792121821585-key.pem
/etc/pki/entitlement/3236342435348109549-key.pem
/etc/pki/entitlement/60472974412349067-key.pem
/etc/pki/entitlement/3236342435348109549-key.pem
/etc/pki/entitlement/60472974412349067-key.pem
但是我只需要rhel-8-for-x86_64-appstream-rpm和rhel-8-for-x86_64-baseos-rpm
awk -F' = ' '/sslclientcert/{print $2}' file
# or
awk '/sslclientcert/{print $3}' file
/etc/pki/entitlement/604712349067.pem
/etc/pki/entitlement/6047297349067.pem
awk -F' = ' '/[.*]/ {printf "%s ", $1} /sslclientcert/{print $2}' file
[rhel-8-for-x86_64-baseos-rpms] /etc/pki/entitlement/604712349067.pem
[rhel-8-for-x86_64-appstream-rpms] /etc/pki/entitlement/6047297349067.pem
这只是一个ini文件。所以crudini会做这个工作:
crudini --get /etc/yum.repos.d/redhat.repo rhel-8-for-x86_64-appstream-rpms sslclientkey
或对于所有section:
for i in in `crudini --get /etc/yum.repos.d/redhat.repo`; do
crudini --get /etc/yum.repos.d/redhat.repo "$i" sslclientkey
done