0

Im trying to extract only the enabled repos from the file below using awk or grep. i know there are the native tool for this such as "yum repolist enabled" but i still want to do this using grep awk or even sed.

the output should result with the string inside the []. for example: "red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms" which is the only enabled repo in this file.

# cat /etc/yum.repos.d/redhat.repo
[red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms]
name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/os
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/key.pem
sslclientcert = /etc/pki/entitlement/11300387955690106.pem

[red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-source-rpms]
name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Source RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/source/SRPMS
enabled = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/key.pem
sslclientcert = /etc/pki/entitlement/11300387955690106.pem

[red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-debug-rpms]
name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Debug RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/debug
enabled = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/key.pem
sslclientcert = /etc/pki/entitlement/11300387955690106.pem
Asaf Magen
  • 862
  • 10
  • 22
  • Possible duplicate of [Find specific pattern and print complete text block using awk or sed](https://stackoverflow.com/questions/19257597/find-specific-pattern-and-print-complete-text-block-using-awk-or-sed) – Cyrus Dec 28 '17 at 10:34
  • `awk '/\[/' infile` – vaettchen Dec 28 '17 at 11:41
  • I didn't see that you want the square brackets removed as well. See my answer. – vaettchen Dec 28 '17 at 13:03

2 Answers2

1
awk -v RS= -F '[][]' '/enabled = 1/{print $2}' file
Ed Morton
  • 188,023
  • 17
  • 78
  • 185
0

Try

awk '/\[/' infile | sed 's/[][]//g'

I found the square brackets part tricky, here is where I got it from.

vaettchen
  • 7,299
  • 22
  • 41