Date: Thu, 13 Sep 2007 12:35:53 -0700 From: "Kurt Buff" <kurt.buff@gmail.com> To: freebsd-questions@freebsd.org Subject: Re: Scripting question Message-ID: <a9f4a3860709131235y53d71306r8785dfbe3a864dad@mail.gmail.com> In-Reply-To: <20070913183504.GC11683@slackbox.xs4all.nl> References: <a9f4a3860709131016w54c12b6fy94fc2b0f286aea3d@mail.gmail.com> <20070913183504.GC11683@slackbox.xs4all.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On 9/13/07, Roland Smith <rsmith@xs4all.nl> wrote: > On Thu, Sep 13, 2007 at 10:16:40AM -0700, Kurt Buff wrote: > > I'm trying to do some text file manipulation, and it's driving me nuts. > > > > I've got a sorted file of SMTP addresses, and want to eliminate the > > lines that are the same up to a space character within the line. > > > > Example: > > > > kurt.buff@gmail.com NO > > kurt.buff@gmail.com OK > > > > The above lines *both* need to be eliminated from output - I don't > > want the first or second of them, I want them both gone. > > > > I've looked at sort and uniq, and I've googled a fair bit but can't > > seem to find anything that would do this. > > > > I don't have the perl skills, though that would be ideal. > > > > Any help out there? > > #!/usr/bin/perl > while (<>) { > # Assuming no whitespace in addresses; kill everything after the first space > s/ .*$//; > # Store the name & count in a hash > $names{$_}++; > } > # Go over the hash > while (($name,$count) = each(%names)) { > if ($count == 1) { > # print unique names. > print $name, "\n"; > } > } > > > Roland > -- > R.F.Smith http://www.xs4all.nl/~rsmith/ > [plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated] > pgp: 1A2B 477F 9970 BA3C 2914 B7CE 1277 EFB0 C321 A725 (KeyID: C321A725) I can follow the logic in that. I'll definitely try incorporating that. Thanks!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a9f4a3860709131235y53d71306r8785dfbe3a864dad>