好吧,我一直有这个问题。我只想使用 yum 从 Linux 系统(RHEL 或 Fedora)通过 bash 脚本在文件中列出可用的更新,但我总是必须处理创建的标头信息,如下所示:
Loaded plugins: XXXX-repo XXXX-updates
: WWWWWW-repo something-updates QQQQQ-updates
Updated packages
package1.i686 1:234 RHEL 6.5 updates
package2.i686 1:234 RHEL 6.5 updates
package3.i686 1-234 RHEL 6.5 updates
package4.noarch 1.234 RHEL 6.5 updates
Run Code Online (Sandbox Code Playgroud)
我想要的只是 package1、package2 等的列表,这看起来很简单,但事实并非如此,因为我不能只 grep 上“更新”或“:”。我是不是看错了?为什么我不想捕获脚本中发现的更新?我应该只更新并检查更新了什么吗?想法?
PS> 我无法使用 --noplugins 选项。
编辑:到目前为止我已经想出了这个,
sudo yum check-update | grep "\." | awk '(NR >=1) {print $1;}' | grep '^[[:alpha:]]'
Run Code Online (Sandbox Code Playgroud)
基本上抓住其中有句点的行,即第一行,并确保它首先包含字母。也许做得有点过头了,但似乎有效。
仅打印“更新的包”后面(但不包括)的行
yum check-update | awk 'p; /Updated packages/ {p=1}'
Run Code Online (Sandbox Code Playgroud)
注意,在我的 Fedora 系统上,一个空行将“标头”与可更新包列表分隔开,所以我会使用awk 'p;/^$/{p=1}'
| 归档时间: |
|
| 查看次数: |
14352 次 |
| 最近记录: |