Visit Our UNIX and Linux User Community


2 dimensional array in unix


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting 2 dimensional array in unix
# 1  
Old 07-27-2009
2 dimensional array in unix

I am trying to implementing two dimensinal array in ksh script.Would you pls help me out.


I have a large size of file, File contains looks like

ID SID VLAUE1 VALUE2 TOTALVALUE

1 a1 01 02 03
1 b1 02 05 07
3 c1 01 09 10
3 c1 11 09 20
.
.
.

I want to create a file or report which displays All the values by ID and SID

For example

Report By ID type

1 01 02 02 05 03 07
3 01 11 09 09 10 20

Report By SID type

a1 01 02 03


Then we can calculate minimum, maximum , avg values from the list.

---------- Post updated at 03:11 PM ---------- Previous update was at 02:57 PM ----------

#!/bin/ksh


Prev_Id=0;
i=0
file_name='$PWD/myfile'
tmp_file='$PWD/temp_file'

echo $file_name

echo $tmp_file
while read line; do

Id=$(echo $line|awk '{print $1}')
Sid=$(echo $line|awk '{print $2}')
Val1=$(echo $line|awk '{print $3}')
Val2=$(echo $line|awk '{print $4}')
Total_val=$(echo $line|awk '{print $5}')
#echo $Feed_Id
if [ $Prev_Id == $Id ];then

#Here I want to push the Id and all the values into an array or hash that can hold uniq Id and all the values.
continue;
fi


done<$file_name

---------- Post updated at 03:54 PM ---------- Previous update was at 03:11 PM ----------

Can anyone help me out.
# 2  
Old 07-27-2009
how about something like:

Code:
#  awk '{t[$1]=t[$1]" "$3" "$4" "$5}END{print "Report By ID type\n";for (x in t) print x,t[x]}' infile
Report By ID type

3  01 09 10 11 09 20
1  01 02 03 02 05 07

And similarly for SID (i.e. $2)...
# 3  
Old 07-27-2009
Code:
while(<DATA>){
  my @tmp = split;
  push @{$id{$tmp[0]}}, $tmp[2]." ".$tmp[3]." ".$tmp[4];
  push @{$sid{$tmp[1]}}, $tmp[2]." ".$tmp[3]." ".$tmp[4];
}
print "----id-----\n";
foreach my $key (keys %id){
 print $key," @{$id{$key}}\n";
}

print "------sid-----\n";
foreach my $key (keys %sid){
 print $key," @{$sid{$key}}\n";
}
__DATA__
1 a1 01 02 03
1 b1 02 05 07 
3 c1 01 09 10
3 c1 11 09 20


Previous Thread | Next Thread
Test Your Knowledge in Computers #328
Difficulty: Easy
The Windows ME operating system was released in the year 2006.
True or False?

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Assign two dimensional array in bash at once

Hi, I have a 10*10 two dimensional array. How do I assign value to all it's 100 elements at once? I don't want to open two for loops and assign one by one. Thanks, Amit (2 Replies)
Discussion started by: amit14august
2 Replies

3. Shell Programming and Scripting

Manipulating a list into a two-dimensional array

hi, total newbie to shell scripting and wondering if some of you guru's can give me a hand on a problem I'm trying to solve. The tmplsnr.a file contains LSNR_51526 db1 db2 LSNR_51527 db3 db4 db5 Summary - depending on which db is set, the script will start the relevant listener... (5 Replies)
Discussion started by: mingy10
5 Replies

4. Programming

Return two dimensional array in c++

I am writing matrix multiplication and trying to return a two dimensional array from a function but I keep getting errors. Can someone please help me? here is my code (it is just the skeleton of my program): void main () { ... int *matmultiply (int, int, int, int , int , int ) ... } ... (4 Replies)
Discussion started by: saboture88
4 Replies

5. Programming

Passing two dimensional array to a function

Hi. I have a problem with passing two dimensional array to a function. First, let me show my code to explain what i am going to do: I have function:void initialize_board(char board);which is supposed to modify content of passed array. I have read here: Question 6.18 how such arrays should be... (3 Replies)
Discussion started by: Shang
3 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

How to display two dimensional array in UNIX

Hi all, Please help me out how to read and display two dimensional array elements in unix. EX: 1 2 3 4 (1 Reply)
Discussion started by: eswarcs
1 Replies

8. 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

9. Shell Programming and Scripting

Help for record (2 dimensional array.)

I am going to develop a address book using the shell scripting commands without sed, awk, .... I am thinking to apply the concept of 2 dimenstional array. Can I create a two dimensional array for the insertion/updation/deletion of record in unix. If yes then tell me plz or recommend me some... (1 Reply)
Discussion started by: murtaza
1 Replies

10. Shell Programming and Scripting

Reference two dimensional array in Perl sub

I am trying to reference a two dimensional array in a subroutine and can't seem to figure this one out in Perl. Does anybody know? Please enlighten me. #!/usr/bin/perl -w use constant DIM => 4; sub Shift_elements_right{ my (@Input, @Output) = @_; for ($i = 0 ; $i <= DIM ;... (5 Replies)
Discussion started by: photon
5 Replies

Featured Tech Videos