Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Nov 2008 08:07:21 +0100
From:      Polytropon <freebsd@edvax.de>
To:        Gary Kline <kline@thought.org>
Cc:        FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   Re: for awk experts only.
Message-ID:  <20081130080721.af3b36d9.freebsd@edvax.de>
In-Reply-To: <20081130065209.GA98518@thought.org>
References:  <20081130045944.GA94896@thought.org> <20081130061104.f595db7e.freebsd@edvax.de> <20081130061731.0691f5ea.freebsd@edvax.de> <20081130065209.GA98518@thought.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 29 Nov 2008 22:52:10 -0800, Gary Kline <kline@thought.org> wrote:
> 	What you have above prints:
> 
> 	foot 1  // noun
> 	foot 0  // verb
>
> 	so doesn't work entirely, but is a good start. 

I'm so stupid. gsub() does not return the result of the
substitution (as, for example, sprintf() would return the
string), but the success of the substitution, 1 or 0.



> (BTW, man gsub turned up
> 	nothing, so I'm assuming thhat gsub it part of awk.

Yes, gsub is listed in "man awk" because it's a function from
within awk.

I've just pkg_add'ed -r WordNet and tried:

	% wn foot -over | awk '/Overview/ { printf("%s %s\n", $4, ($3 == "noun") ? "n." : ""); }'
	foot n.
	foot

Of couse, this handles only "noun". If you want to abbreviate
other kinds of words (e. g. "verb" -> "v.", "adverb" -> "adv.",
"adjective" -> "adj."), it would be better to implement a short
awk script as a "wrapper" for the wn command. If you're only
interested in the first result mentioned, you could test NR == 1.

	% wn foot -over | awk '/Overview/ && (NR == 2) { printf("%s %s\n", $4, ($3 == "noun") ? "n." : ""); }'
	foot n.



-- 
Polytropon
>From Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081130080721.af3b36d9.freebsd>