Ubuntu 18의 dpkg 및 egrep

Ubuntu 18의 dpkg 및 egrep

dpkg및 명령을 사용하여 egrep이름을 나열 해 보십시오 q. 이미 시도했습니다.

dpkg -l | egrep -l q
dpkg -l | egrep -l ^q
dpkg -l | egrep q
dpkg -l | grep q

무엇이 잘못되었나요?

답변1

옵션 --get-selections대신 사용 :-l

dpkg --get-selections |grep ^q

또는 다음 awk을 사용하여 열 순서를 변경합니다.

dpkg -l |awk '{print $2 , $3 "\t\t" $1}' | grep ^q

답변2

실제로 grep(또는 egrep)이 전혀 필요하지 않습니다. dpkg -l명령은 패턴을 허용합니다.

-l, --list package-name-pattern...
    List packages matching given pattern.

이는 package-name-pattern정규식이 아닌 전역 패턴입니다. 그래서

dpkg -l 'q*'

보다 구성 가능한 형식(예: 바이너리 패키지 이름만)으로 출력하려면 dpkg-queryex를 사용할 수 있습니다.

dpkg-query -Wf '${binary:Package}\n' 'q*'

답변3

egrep의 정규 표현식이 의 예상 출력과 일치하지 않습니다 dpkg -l. 패키지의 상태, 버전 및 설명이 포함된 동일한 출력 형식을 유지하려면 dpkg -l예상 형식과 일치하도록 정규식을 변경해야 합니다. 줄 시작 부분에 세 문자(패키지 상태 설명) 시스템의 패키지) 및 패키지 이름 앞에 Space.

표현식에서 이는 줄의 시작 부분부터 일치한다는 의미입니다. 즉, ^... [qQ]공백 이 뒤따르는 임의의 세 문자를 일치시킨 다음 대문자 또는 소문자 "q"로 시작하는 패키지를 일치시키는 것을 의미합니다(Ubuntu에서는 패키지는 소문자만 가능합니다. 그러나 이러한 규칙의 사용자 정의 패키지를 따르지 않을 수도 있습니다).^...q

$ dpkg -l | egrep '^... [qQ]'
ii  qdbus                                         4:4.8.7+dfsg-7ubuntu1                        amd64        Qt 4 D-Bus tool
ii  qemu-block-extra:amd64                        1:2.11+dfsg-1ubuntu7.19                      amd64        extra block backend modules for qemu-system and qemu-utils
...

관련 정보