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*'

전체 패키지 목록이 명령줄에 맞는지 확인해야 하지만, 한 명령에서 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 )

그러면 그렇게 해.

관련 정보