Visit Our UNIX and Linux User Community

Match elements in an AWK multi-dimensional array

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Match elements in an AWK multi-dimensional array
# 1  
Old 04-28-2010
Match elements in an AWK multi-dimensional array


I have two files in the following format;

A B C D 
I J  K L

1 2 3 4
5 6 7 8
9 10 11 12

I have read them both in to multi-dimensional arrays. I need a file that has column 2 of the first file printed out for each column 3 of the second file ie...

output file:
B 3
B 7
B 11
F 3
F 7
F 11
J 3
J 7
J 11

Here is the code I have so far, any help would be appreciated. Or a better way of accomplishing this would be welcomed I am using a bourne shell.

{getline < "f1" } {for (j=1;j<=NF;j++) S[NR,j]=$j }  {getline < "f2"} { for (i=1;i<=NF;i++) G[NR,i]=$i } 
END { for (k=1;k<=3;k++) {print S[NR,2],G[k,3]}}' f1 f2

Last edited by vgersh99; 04-28-2010 at 02:44 PM.. Reason: code tags, please!
# 2  
Old 04-28-2010
nawk '
# FNR and NR have the same values when dealing with the FIRST file passed on cli - "file2"

# dealing with the SECOND file
# for every record/line in a file, iterate through array f2 (indexed by the record/line number,
# outputting second field ($2) from the current file/record AND the corresponding records in array f2
{for(i=1;i in f2;i++) print $2, f2[i]}
' file2 file1

Last edited by vgersh99; 04-28-2010 at 03:14 PM.. Reason: comments
# 3  
Old 04-28-2010

The code worked perfectly that method is pertty slick!

This is actually a subset of a larger problem, instead of printing the columns I am also trying to compare them. I will try and use your method in writing the rest of the code.

I am still learning AWK so, what is FNR doing in this code? Also the condition in the if statment "i in f2" what is it doing?

# 4  
Old 04-28-2010
updated code with comments

Previous Thread | Next Thread
Test Your Knowledge in Computers #588
Difficulty: Easy
A linear search algorithm is also known as sequential search.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi Dimensional array in bash

Hi, I'm developing a script which contains a multi dimensional array, however for some reason the array is not iterating. When executing the script, services are listed as arguments from argument 2. Ex voice data sms. service=${@:2}; for services in $service do ... (2 Replies)
Discussion started by: nms
2 Replies

2. Shell Programming and Scripting

Multi Dimensional array

I have an array of names. Each one of the name, has a number represented to it. For example A has an ID 8, B has an ID 2. What I am after is a for loop that when the array is in position 1, a particular variable is set to the value of position 1 in array 2 declare -a arr=("A" "B" "C"... (6 Replies)
Discussion started by: nms
6 Replies

3. Shell Programming and Scripting

How to reference 2 dimensional array in awk?

Hello, all For a 1-dimensional array, such as myarr_1=1 myarr_1=2 myarr_1=3I know I can write a loop as below to show the array member one by one: for (i in myarr_1){print i, myarr_1}Now, suppose I have a two dimensional array such as: myarray_2=1 myarray_2=2 myarray_2=10 myarray_2=20My... (3 Replies)
Discussion started by: littlewenwen
3 Replies

4. UNIX for Dummies Questions & Answers

Help: stdin to multi-dimensional array

I cant get out of this while loop at the beginning of my program. Just reading from stdin one char at a time and storing it into a multi-array. Need to fix it with in two hours. #include <sys/wait.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include... (1 Reply)
Discussion started by: unt_engn
1 Replies

5. Shell Programming and Scripting

sorting multi dimensional array

Hi there, Can someone let me know how to sort the 2 dimensional array below by column 1 then by column 2? 22 55 2222 2230 33 66 44 58 222 240 11 25 22 60 33 45 output: 11 25 22 55 22 60 33 45 33 66 44 58 (6 Replies)
Discussion started by: phoeberunner
6 Replies

6. Shell Programming and Scripting

PHP: Search Multi-Dimensional(nested) array and export values of currenly worked on array.

Hi All, I'm writing a nagios check that will see if our ldap servers are in sync... I got the status data into a nested array, I would like to search key of each array and if "OK" is NOT present, echo other key=>values in the current array to a variable take the single array... (1 Reply)
Discussion started by: zeekblack
1 Replies

7. Shell Programming and Scripting

PHP: how can I delete empty/NULL elements from a multi-dimensional array.

Hi all I have a file that i'm running and exec(cat ./dat) against..and putting its contents into any array, then doing an exploding the array into a multi-dimension array... The 15 multi-dimensional arrays have elements that are null/empty, I would like to remove/unset these elements and then... (2 Replies)
Discussion started by: zeekblack
2 Replies

8. Shell Programming and Scripting

Manipulating Pick multi dimensional data with awk.

Hi. I am reasonably new to awk, but have done quite a lot of unix scripting in the past. I have resolved the issues below with unix scripting but it runs like a dog. Moved to awk for speed and functionality but running up a big learning curve in a hurry, so hope there is some help here. I... (6 Replies)
Discussion started by: mike.strategis
6 Replies

9. Shell Programming and Scripting

awk - array elements as condition

Hi, can I use array elements ( all ) in conditional statements? the problem is ,the total number of elements is not known. e.g A is an array with elements - 1,2,3 now if i want to test if the 1 st field of input record is either 1,2 or 3, i can do something like this if ( $1 ~... (1 Reply)
Discussion started by: shellwell
1 Replies

10. Shell Programming and Scripting

Multi Dimensional array in KSH

Is there any way to use multi dim. array in KSH ? (1 Reply)
Discussion started by: sinpeak
1 Replies

Featured Tech Videos