(셸 스크립트에서) IPS 패킷의 속성을 추출할 수 있기를 원합니다. 기본적으로 나는 pkg info
이 명령이 나열하는 것과 똑같은 정보를 원하지만 불행하게도 이 명령이 나열하는 정보의 형식은 스크립트에서 읽기에 그다지 친숙하지 않습니다. 아래 예:
$ pkg info archiver/gnu-tar
Name: archiver/gnu-tar
Summary: GNU version of the tar archiving utility
Description: Tar is a program for packaging a set of files as a single
archive in tar format.
Category: Development/GNU
State: Installed
Publisher: solaris
Version: 1.26
Build Release: 5.11
Branch: 0.175.0.0.0.2.537
Packaging Date: October 19, 2011 09:11:16 AM
Size: 1.73 MB
FMRI: pkg://solaris/archiver/[email protected],5.11-0.175.0.0.0.2.537:20111019T091116Z
비슷한 명령을 사용할 수 있기를 바랐 pkg get-property pkg.summary archiver/gnu-tar
지만 찾을 수 없었습니다. 나는 위의 출력을 분석하고 싶지 않습니다. 둘째, 매뉴얼 페이지에는 출력이 pkg info
기계가 아닌 사람이 읽을 수 있도록 의도된 것임을 명확하게 명시하고 있습니다.
답변1
대부분의 pkg info
보고서는 다음에서 제공됩니다.놓다패키지 속성 및 기타 메타데이터를 정의하는 패키지 내의 작업입니다. 아카이버/gnu-tar의 예:
% pkg contents -t set -o name,value archiver/gnu-tar
NAME VALUE
info.classification org.opensolaris.category.2008:Development/GNU
info.source-url http://ftp.gnu.org/gnu/tar/tar-1.26.tar.bz2
info.upstream-url http://www.gnu.org/software/tar/
org.opensolaris.arc-caseid PSARC/2000/488
org.opensolaris.consolidation userland
pkg.description Tar is a program for packaging a set of files as a single archive in tar format.
pkg.fmri pkg://solaris/archiver/[email protected],5.11-0.175.1.0.0.20.0:20120709T173816Z
pkg.summary GNU version of the tar archiving utility
variant.arch ['i386', 'sparc']
% pkg contents -H -t set -o value -a name=pkg.summary archiver/gnu-tar
GNU version of the tar archiving utility
답변2
pkg info 출력을 구문 분석하여 수행한 방법은 다음과 같습니다.
$ pkg info archiver/gnu-tar | nawk '
/^ *[A-Za-z ]*:/ {
gsub("^ *","",$1)
if(NR>1) printf("\n")
name=substr($0,1,index($0,":")-1);
value=substr($0,index($0,":")+1);
gsub(" ","_",name);
printf("%s=%s",name,value)
next
}
{
gsub("^ *","",$1)
printf("%s",$0)
} ' | sed -e 's/= /="/' -e 's/$/"/'
산출:
Name="archiver/gnu-tar"
Summary="GNU version of the tar archiving utility"
Description="Tar is a program for packaging a set of files as a singlearchive in tar format."
Category="Development/GNU"
State="Installed"
Publisher="solaris"
Version="1.26"
Build_Release="5.11"
Branch="0.175.0.0.0.2.537"
Packaging_Date="October 19, 2011 09:11:16 AM"
Size="1.73 MB"
FMRI="pkg://solaris/archiver/[email protected],5.11-0.175.0.0.0.2.537:20111019T091116Z"