我可以使用 grep 匹配来执行命令吗?

我可以使用 grep 匹配来执行命令吗?

我需要将 php 从 5.3 升级到 5.4。我已经用rpm安装了。我想要全新安装:删除所有 5.3 软件包,然后安装所有必需的 5.4。这是查看所有已安装软件包的命令:

rpm -qa |grep php

它打印出软件包列表,我想用以下方法删除所有软件包:

rpm -e *pakage.name*

我可以迭代 grep 结果中的所有匹配项并在以下位置使用每个匹配项:

rpm -e *grep.match*

答案1

尝试这个:

rpm -qa | grep php | xargs rpm -e

答案2

您通常不想分段删除这样的包,因为您通常会跳过一些依赖项。最好一次全部删除,如下所示:

$ rpm -e $(rpm -aq | grep php)

更好的是,我鼓励您使用yumRPM 来执行此操作。

$ yum remove $(rpm -aq | grep php)

更好的方法是找出与所有 PHP 包匹配的模式,并告诉 YUM 根据该模式进行删除。是的,YUM 知道正则表达式。

$ yum remove 'php*'

您需要确保您的整个包列表适合命令行,但如果您告诉在一个命令中删除 1/2 的 PHP 相关包,然后再删除另一个命令,则使用xargs或单独执行此操作会出现问题与其余人一起指挥。rpmrpm

答案3

试试这个脚本:

for p in $(rpm -qa |grep php) ; do rpm -e ${p} ; done

答案4

( IFS='
' ; printf 'rpm -e "%s"\n' $(rpm -qa |grep php) |
    . /dev/stdin )

就这样吧。

相关内容