Date: Tue, 03 May 2005 13:15:19 -0700 From: David Armour <dfarmour@myrealbox.com> To: freebsd-questions@freebsd.org, Toni Schmidbauer <toni@stderror.at> Subject: Re: pkg_info output? 'homework' clarification sought... Message-ID: <200505031315.19584.dfarmour@myrealbox.com> In-Reply-To: <20050502120100.B872116A525@hub.freebsd.org> References: <20050502120100.B872116A525@hub.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
hello, sorry: clicked wrong icon, & truncated my reply/question. i think. i hope my lame-ish attempt at 'homework' doesn't screw with the list charter. i offer it in a spirit of open-source newbie encouragement. [note from previous message, orphaned by my mistake: [a] In a context address, any character other than a backslash (``\'') or newline character may be used to delimit the regular expression. ] > > pkg_info | sort | sed -e 's/-[0-9].*$//' | uniq -c | grep -v > > '^[[:space:]]*1' >1),>2),>3)... in previous mis-sent message. > 4) grep -v '^[[:space:]]*1' > ... deletes lines where only 1 version exists, e.g.: grep -v, --invert-match # Invert the sense of matching, to select non-matching lines. A bracket expression is a list of characters enclosed by [ and ]. It matches any single character in that list; if the first character of the list is the caret ^ then it matches any character not in the list. ... Finally, certain predefined named classes of characters are ... [:space:] .... The caret ^ and the dollar sign $ are metacharacters that respectively match the empty string at the beginning and end of a line. i'd assumed [bad!] that the '-v' represented 'verbose' as it does with several other commands. but the overall structure, if that's the right word, of the grep part of the tip seems a bit like a double negative, what with the '^' HOMEWORK portion: > the script is not quite correct because these two packages are > counted as two versions of xorg-fonts: > xorg-fonts-100dpi-6.8.2 > xorg-fonts-75dpi-6.8.2 > > pkg_info | sort | sed -e 's/-[0-9].*$//' | uniq -c | grep -v > > '^[[:space:]]*1' so 2 hits out of 360 odd packages compromise otherwise informative results? and assuming, for the moment, that everyone here understands that the ideas expressed *here* are coming from about as far out in left field as is possible... ? as i understand things, so far: sed gets a list of sorted stuff that looks like: autoconf-6.8.2.... borg-6.8.2 ... perl-6.8.2... xorg-fonts-100dpi-6.8.2 xorg-fonts-75dpi-6.8.2 and uniq counts instances of duplication so the list now looks like: 3 autoconf-6.8.2 1 borg-6.8.2 ... 2 perl-6.8.2 2 xorg-fonts-100dpi-6.8.2 the tip asks sed to look in a sorted list of installed packages for instances of hyphens followed by numerals between 0-9. i'm guessing that sed either needs to incorporate a check within its own results (maybe a set of brackets with a second sed -e 's/-[0-9].*$//' |)?, *before* uniq gets its hands on it, or some sort of if/then condition programming wizardry to scarf up potential stragglers. of course, at this stage in my travels in unix-land, i have no idea, clear or unclear how such twickery might occur. nonetheless, the natives appear friendly.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505031315.19584.dfarmour>