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

Hello,

I have two files in the following format;

file1:
Code:
A B C D 
E F G H
I J  K L

file2:
Code:
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:
Code:
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.

Code:
{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 01:44 PM.. Reason: code tags, please!
# 2  
Old 04-28-2010
Code:
nawk '
# FNR and NR have the same values when dealing with the FIRST file passed on cli - "file2"
FNR==NR{f2[FNR]=$3;next}

# 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 02:14 PM.. Reason: comments
# 3  
Old 04-28-2010
vgersh99

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?

Thanks
# 4  
Old 04-28-2010
updated code with comments
Login or Register to Ask a Question

Previous Thread | Next Thread

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 so...eg...let 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
Login or Register to Ask a Question