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)

より良い点は、RPMを使用してこれを行うことをお勧めしますyum

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

より良いアプローチは、すべてのPHPパッケージと一致するパターンを見つけ、YUMにそのパターンに基づいてパッケージを削除するように指示することです。はい、YUMは正規表現を知っています。

$ yum remove 'php*'

パッケージの完全なリストがコマンドラインに合っていることを確認する必要がありますが、1つのコマンドからPHP関連パッケージの1/2を削除するように指示され、別のコマンドで削除するように指示された場合は、残りのパッケージと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 )

それではそうします。

関連情報