How to deal with multidimensional array in awk?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to deal with multidimensional array in awk?
# 1  
Old 03-27-2013
How to deal with multidimensional array in awk?

Hi all!

I would like to know how to print
Code:
$0

when using multidimensional array like below

time being I am using for loop to print columns like this

Code:
awk 'FNR==1{i++}
{for(k=1;k<=NF;k++)A[i,FNR,k]=$k}
END{for(j=1;j<=25;j++)
print A[2,1,1],A[2,1,2],A[2,j,3],A[2,j,4],A[2,j,1],A[2,j,2],A[2,j,3],A[2,j,4],A[1,j,1],A[1,j,1],A[1,j,2],A[1,j,3],A[1,j,4],A[1,j,1]}' file1 file2

so here my problem is I have more than 15 column that means whether I have to type like below till 15th column
Code:
A[2,j,1],A[2,j,2],.....A[2,j,15]

or any other solution is available ?

thanks in advance
# 2  
Old 03-27-2013
I'm not sure your print A[2,1,1],A[2,1,2], . . . , A[2,j,1], . . . is intended as is or just sloppy typing. While I don't really understand the pattern of your above print statement, I've dreamed up following which might come close to what you need:
Code:
END {for (i=2; i>=1; i--) for (j=1; j<=25; j++) for (k=1; k>=4; k++) printf "%s%s", A[i,j,k], OFS; printf "\n"}

EDIT: at a second look I see you need 25 lines with the strange pattern given above; in that case, you need to permute the loops so the middle index is the first to run, add a newline printf at its end, and then loop the others...

Last edited by RudiC; 03-27-2013 at 09:28 AM..
This User Gave Thanks to RudiC For This Post:
# 3  
Old 03-27-2013
Thank you so much Sir, your solution worked fine for me, Sir please tell me how can I put NF of file 1 in counter like LC[i]=NR for line count you suggested in some other post
# 4  
Old 03-27-2013
NF or NR?

Code:
FNR==1 {LC[i] = LNR}         # save last iteration's record no. in LC array
       {LNR = NR}            # keep this iteration's record no. for use in next it.

# 5  
Old 03-27-2013
Sir I need
Code:
NF

to calculate number of columns in file
# 6  
Old 03-28-2013
OK, then try to adapt above proposal and post!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sort multidimensional Array

Hello I have a problem. I create a Multidimensional Array Like this: ENTRY="$kunnum-$host" ENTRY="$host" ENTRY="# $3" for key in "${!ENTRY}"; do ENTRIES=${ENTRY} # INDEX=IP(5) donedeclare -p declare -A ENTRIES=(="unas15533" ="unas" ="# RDP-Terminal 2"... (12 Replies)
Discussion started by: Marti95
12 Replies

2. Shell Programming and Scripting

Multidimensional array

I am learning about bash system variables, such as $ , @ and #. I have this piece of script implementing an array and it is doing its job just fine. This is not the only array I will be using. Just for ease of maintenance and more coding I would like to have the arrays in two dimensional... (4 Replies)
Discussion started by: annacreek
4 Replies

3. Shell Programming and Scripting

Multidimensional array:awk error

awk -F'\t' -v OFS='\t' ' { if($2 in arr) { #print "Sahi", NR,arr for(k=2;k<=NF;k++){ # sum]+=$2 } } else { arr=NR #print "awk",NR for (k=3;k<=NF ; k++){ sum=$k } } } (7 Replies)
Discussion started by: genome
7 Replies

4. Shell Programming and Scripting

gawk - How to loop through multidimensional array?

I have an awk script that I am writing and I needed to make use of a multidimensional array to hold some data... Which is all fine but I need to loop through that array now and I have no idea how to do that. for a regular array, the following works: ARRAY for(var in ARRAY) { ... } ... (5 Replies)
Discussion started by: trey85stang
5 Replies

5. Programming

Multidimensional array of strings with vector.

I've been struggling with this for quite some time. I decided I should get some help with this. Nothing is working. I'm getting a segmentation fault or out of bounds error when I try to load the entries in the for loop.I'm really frustrated. :mad: Compiling isn't the problem. It's crapping out on... (5 Replies)
Discussion started by: sepoto
5 Replies

6. Shell Programming and Scripting

multidimensional array in awk

Hi, I was trying to process a file with the help of awk. I want to first display all the rows that contains 01 and at the end of processing I have to print some portion of all the lines. like below. Output expected: (2 Replies)
Discussion started by: ahmedwaseem2000
2 Replies

7. Programming

multidimensional array using c++ vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (0 Replies)
Discussion started by: carl.alv
0 Replies

8. Shell Programming and Scripting

AWK multidimensional array

In a single dim. awk array, we can use : <index> in <array name> to determine whether a particualar index exists in the array or not. Is there a way to achieve this in a awk multi dim. array ? (4 Replies)
Discussion started by: sinpeak
4 Replies

9. Shell Programming and Scripting

Awk multidimensional Array

Hello Experts,, Can anybody give me a brief idea what is following bold letter statement is for!! what is the term called so that I can google for it.. It seems to be an array inside another array.. awk' /TXADDR/ { txaddr=$NF } ##understood /TXDATA/ { txdata]=$NF... (1 Reply)
Discussion started by: user_prady
1 Replies

10. Shell Programming and Scripting

multidimensional array in perl

i'm trying to open a file with three or more columns and an undetermined, but finite number of rows. I want to define an array for each row with each element of the row as a sub array. The columns are separated by tabs or spaces. Here's the file: 12x3.12z34b.342sd3.sds 454.23.23.232 ... (9 Replies)
Discussion started by: prkfriryce
9 Replies
Login or Register to Ask a Question