On 4/18/05, Brad brad@bradandkim.net wrote:
Hi all,
I have 3 files each of which are space delimited sets of data. I have to cross-reference these files to get one set of data at the end. The first file maps IP Address to Cisco ATM interface, the second maps IP Address to MAC Address, and the third maps Cisco ATM interface to actual VPI and VCI. I need to map MAC Address to VCI/VPI. Here is a sample of each file:
24.121.58.91 0.32
ip to if
24.121.57.11 0100.0f66.2b81.5f
mac to ip
0.2 1 33
if to data
I was thinking of using awk, but I am not sure how to tell awk to keep an array for each line of 2 files (let alone 3). Any shell script guru's care to lend some advice?
perl's associative arrays are ideal for this kind of thing, especially coupled with its easy line-based file primitives.
open IP2IF, "ip_to_interface_file"; while (<IP2IF>){ /([0123456789.]+)\s+([0123456789.]+) or next; $ip2if{$1} = $2; };
repeat something like that for all three, then
for (keys %mac2ip){ print "Mac Address $_ is handled on ", "Vdata $if2data{$ip2if{$mac2ip{$_}}}\n"; };
hope that helps