如何从 yum check-updates 中 grep 可用更新的计数

问题描述 投票:0回答:5

我想检查更新是否可用,如果有,请在安装更新之前执行一些步骤。我运行

yum check-updates
查看可用于已安装软件包的更新列表,但我想
grep
并获得一个计数,我可以将其用于
bash
脚本中的某些逻辑。因此,理想情况下,我希望
grep
输出
check-updates
并在没有更新时返回 0,或者如果有五个更新可用,那么我希望
grep
返回 5。

如何 grep 来返回计数?

bash grep yum
5个回答
6
投票

我喜欢更简单的方法。

“yum -q”减少 yum 的输出,因此它只显示软件包列表。将此与“wc -l”结合起来计算输出的行数。

因此,为了获取需要更新的软件包的数量,我将运行

sudo yum -q 检查更新 |厕所-l


3
投票

你知道

grep -c
吗?我刚刚创建了一些无意义的文件,给出了以下结果:

Prompt> grep "AA" test.txt
1A01 TCCTTGAAAG
TCAACAAGAA
TCGCAAA
TTTAAAGTCGT
 GGCGGAATCAATAC
GATGGAATATGCGCC

如果我使用

grep -c
,这就是结果:

Prompt> grep -c "AA" test.txt
6

如果这不能完全回答您的问题,请编辑您的问题并添加更多信息,以显示您正在寻找的内容。

另外,请注意,在每个 UNIX 命令后面添加

 | wc -l
会读取该命令的结果数量。


3
投票

awk 和 grep 的组合给出了已安装软件包的可用更新计数:

yum check-updates | awk 'p;/^$/{p=1}' | grep -c "\."

这是基于如何获取 yum 更新列表

中的信息

0
投票

用于

quiet
-q 很棒,但您可能还想
grep
out 任何空行以及 trailing 已加载插件消息。这对于准确计数非常有效:

yum check-update -q|egrep -v "Loaded plugins: langpacks, product-id, subscription-manager|^$"|wc -l

0
投票

我遇到了同样的问题,需要一个同时适用于 CloudLinux 和 CentOS 的解决方案。

cut
命令比
awk
更能仅获取包名称。它还带来了一些空行,我使用
grep -v
将其删除。这是对我有用的解决方案:

列出软件包:

yum check-update -q | cut -d " " -f 1 | grep -v -E "^$"

要计算它们,只需在末尾添加“

| wc -l
”即可:

yum check-update -q | cut -d " " -f 1 | grep -v -E "^$" | wc -l

要获取以逗号分隔的列表:

yum check-update -q | cut -d " " -f 1 | grep -v -E "^$" | sed ':a;N;$!ba;s/\n/,\ /g'
© www.soinside.com 2019 - 2024. All rights reserved.