From owner-freebsd-questions Wed Feb 7 12:12:37 2001 Delivered-To: freebsd-questions@freebsd.org Received: from cactus.fi.uba.ar (cactus.fi.uba.ar [157.92.49.108]) by hub.freebsd.org (Postfix) with ESMTP id 0EBB837B4EC for ; Wed, 7 Feb 2001 12:12:10 -0800 (PST) Received: from cactus.fi.uba.ar (cactus.fi.uba.ar [157.92.49.108]) by cactus.fi.uba.ar (8.9.3/8.9.3) with ESMTP id RAA39623; Wed, 7 Feb 2001 17:16:04 -0300 (ART) (envelope-from fgleiser@cactus.fi.uba.ar) Date: Wed, 7 Feb 2001 17:16:04 -0300 (ART) From: Fernando Gleiser To: "Zaitsau, Andrei" Cc: "'freebsd-questions@freebsd.org'" Subject: Re: sed & awk help...?! In-Reply-To: <054F7DAA9E54D311AD090008C74CE9BD01F1E94E@exchange.panasonicfa.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi I don't know if this is what you want, but the following perl script produces the following output with the input file you supplied: 1 ab 5 ac 7 ab 9 ab 4 ab 6 ac 8 ac -----8< cut here 8<------- #! /usr/bin/perl -w $i=0; while (<>) { ($first, $sec, $third)=split(/\s+/, $_); $in[$i++]=$first; $out[$sec]=$third; } foreach $i (@in) { if (defined($out[$i])) { printf "%d\t%s\n", $i, $out[$i]; } } -----8< cut here 8<------- Fer On Wed, 7 Feb 2001, Zaitsau, Andrei wrote: > Hello Everyone, > I have small work related problem. > Can someone help me with that? It's more UNIX question. > > Please CC me as I am not subscribed to a list. > > Here The Problem. > I have a file. And there is 3 tables in it. > > 1 12 ac > 3 4 ab > 5 6 ac > 7 8 ac > 9 1 ab > 2 13 ab > 4 5 ac > 6 7 ab > 8 9 ab > > The thing I need is to do some sorting. > I guess it could be done with 'awk' or 'sed' utilities. > > Okay program looking at the first value of the first table and compare it to > the value in the second table. If it finds a match on the second table it > outputs to other file matching value plus corresponding value from the 3rd > table (just look at it as 2nd and 3rd tables are hard linked). > > example: program is looking at value '1' in the 1st table, finds exact value > in the second table and outputs this value and corresponding letters 'ab' to > a separate file (other way to see it 2nd and 3rd table are hard linked) > second step it checks value '3' from the first table and it does not find it > in 2nd table, so it skips the record. And does not output anything > Next, 5 in first table matches 5 in 2nd table so it outputs '5 ac' in the > file (2nd and 3rd tables are hardlinked) > > I am not sure if I explaining it clearly enough, but I hope someone got the > idea. > Please help me how to do it, I loose my sleep for 3 days already... > Thanks. > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-questions" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message