I don't think you can have that array as the index needs to be unique. One possible index could be "make & engine". Then you could try sth like (untested)
for (i in array) {split (i, M); X[M[1]]} for (i in X) print i}
Agreed - stupid example. Was trying to make it simple.
Real world - we have two arrays (source & comparison). What I want is for each source index element value return all the element matching comparison index values.
Here is an example performing array value comparison.
awk '
BEGIN {
SRC["102030"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102030"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102040"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102050"] = "AEE77123402128B2EF24FBEE77D28B2E"
CMP["102080"] = "BEE77DA5BE9F24FBE044002128B2E77C"
}
END {
print "Results:"
for ( v in SRC )
{
for ( k in CMP )
{
if ( k == v )
print "Source: " k
else if ( CMP[k] == SRC[v] )
print "Result: " k
}
}
}
' /dev/null
nawk -F= '
BEGIN {
SRC["102030"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102030"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102040"] = "BEE77DA5BE9F24FBE044002128B2E77C"
CMP["102050"] = "AEE77123402128B2EF24FBEE77D28B2E"
CMP["102080"] = "BEE77DA5BE9F24FBE044002128B2E77C"
}
END {
printf "Source_Name" " Problem_Name Hash\n"
for ( v in SRC )
{
for ( k in CMP )
{
if ( k == v )
printf k
else if ( CMP[k] == SRC[v] )
printf "%+13s\n",k CMP[k]
}
}
}
' /dev/null