使用grep从订阅管理器中提取数据

时间:2019-06-13 12:15:49

标签: linux bash redhat

我想从Red Hat订阅管理器中检索某些信息。

我已经运行了一些命令,但是它们没有给我我想要的东西:

subscription-manager list --consumed 2>/dev/null | \
  grep -e "SKU\|Contract\|Account\|Serial\|Pool ID\|System Type"

这里可以很好地检索信息,但是在订阅管理器中有一个部分列出了您订阅的REPOS。

例如,这是一对多的关系

Provides:    Red Hat Beta
             Red Hat Enterprise Linux Atomic Host
             Red Hat CodeReady Linux Builder for x86_64
             Red Hat Enterprise Linux Atomic Host Beta
             ...

如果没有混乱,我无法对此进行搜索,或者可以吗?

理想情况是在Provides:部分中列出所有已订阅的存储库进行重申。还是使用awksed会更好?

1 个答案:

答案 0 :(得分:1)

我没有方便的机器来安装它,但是请尝试一下:

subscription-manager list --consumed 2>/dev/null |
  sed -En '/^Provides:\s+/,/^\s*$/p'

-En说使用扩展模式匹配,但是除非询问,否则不要打印。

/^Provides:\s+/,/^\s*$/p将所有从起始字符串到空行的行都匹配,并打印出来。

如果没有以下空白行,请尝试

sed -En '/^Provides:\s+/,/^\w/{ /^[P ]/p }' 

或者也许

sed -En '/^Provides:\s+/,/^\w/{ /^Provides: |^\s/p }'