Indirect Referral Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Indirect Referral Script
# 1  
Old 02-15-2012
Indirect Referral Script

I have a file with two columns of numbers (member IDs):

1 1
2 1
3 1
4 2
5 4
6 1
7 5
8 3
9 2

Think of column 1 as the referee and column 2 as the referrer.

Is there a good way to backtrack who referred who? I would like an output, for this example here to be:

1 1
2 1
3 1
4 2 1
5 4 2 1
6 1
7 5 4 2 1
8 3 1
9 2 1

Does that make sense?

I assume there is a clever way to use join to solve this, but I've been struggling to come up with a solution. Smilie

Thanks, in advance, for your help!
# 2  
Old 02-15-2012
Assuming that 'someone' will always be a self referal (1 1), someone is only referred by one other, and will only appear in the left column once, then this will work:

Code:
awk '
    function printchain( who )
    {
        printf( "%s ", who );
        if( a[who] )
            printchain( a[who] );
    }

    {
        order[++oidx] = $1;
        a[$1] =  $1 == $2 ? 0 : $2;
    }

    END {
        for( i = 1; i <= oidx; i++ )
        {
            printchain( order[i] );
            printf( "\n" );
        }
    }
' input-file


Last edited by agama; 02-15-2012 at 08:48 PM.. Reason: better syntax.
# 3  
Old 02-15-2012
Thank you!

perfect. thank you.
Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pattern match and replace indirect directory reference using sed

Hi, I need a ksh script to replace indirect directory references in an .ini file with a env variable using sed or awk. The .ini file is for example as such: A=.. B=../ C=../.. D=../../ E=../bin F=../../bin G=../../bin/xml H=../../bin/xml/ Need to replace an instance of .. or... (2 Replies)
Discussion started by: andyatit
2 Replies

2. Shell Programming and Scripting

Indirect variables in Bash

Hello, I've spent hours this morning reading various past forum posts and documentation pages but I can't find exactly what I need. I'm trying to call a variable with a variable in the name without having to make a third variable. For example: path=AB legAB=50 leg$path I want to... (8 Replies)
Discussion started by: DFr0st
8 Replies

3. Shell Programming and Scripting

Does SH support indirect expansion like BASH?

Hello, is there a kind soul who can answer me, does the SH support double substitution known as indirect expansion similar to BASH? The syntax for bash is ${!var}. For instance in bash I can write something like this: VAR="value" REF_VAR="VAR" echo ${!REF_VAR} and get the "value"... (1 Reply)
Discussion started by: dimentiy
1 Replies

4. Shell Programming and Scripting

Indirect variable assignment

Hi I have variable A_B=alpha also var1="A" var2="B" I want to retrieve the value alpha using var1 and var2 , somthing like echo ${${var1}_${var2}} that works. Obviously this is receiving syntax error (6 Replies)
Discussion started by: sumir
6 Replies

5. Linux

How to get an Indirect Variable Value..?

Hi, I've got a small problem. If varible A stores "B" and Variable B stores C, How to get the value of variable B by using only Variable A..? I tried the following but didnt work pease help.. $ var1=vikram $ echo $var1 vikram $ vikram=sampath $ echo $vikram sampath $ echo... (6 Replies)
Discussion started by: vickramshetty
6 Replies

6. Shell Programming and Scripting

Length of an indirect variable

The construct ${#parameter} returns the number of characters in the parameter and ${!parameter} specifies an indirect variable. My question is: How do I combine these two. What I want is ${#!parameter} but this gives an error. Of course I can use: dummy=${!parameter} ${#dummy} but that's a... (0 Replies)
Discussion started by: gone_bush
0 Replies

7. UNIX for Advanced & Expert Users

Compound indirect variable references

Using bash, I'm trying to read a .properties file (name=value pairs), assigning an indirect variable reference for each line in the file. The trick is that a property's value string may contain the name of a property that occurred earlier in the file, and I want the name of the 1st property to... (5 Replies)
Discussion started by: tkrussel
5 Replies
Login or Register to Ask a Question