Yet another bash arrays question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Yet another bash arrays question
# 1  
Old 09-23-2009
Question Yet another bash arrays question

Hi all,
I have a file that contains many lines, but only a few are of my interest, so I'm cutting it with grep + awk, and the result I get is for example
Code:
line 0
line 1
line 2
line 3
line n

Now I want to store each line in an array "cell" so I can use it later calling to
${array[0]}, ${array[1]}, etc.
When I tried it doing
Code:
array[$count]=$(grep line file.txt | awk -F \" '{print $2}')

and then
Code:
echo ${array[@]}

it gives me
Code:
line 0 line 1 line 3 line n

but doing
Code:
echo ${#array[@]

shows that all I have is a single component, so I can't use each value
What am I doing wrong?
Thanks in advance
# 2  
Old 09-23-2009
You can do something like this to fill the array:

Code:
#!/bin/bash

i=1

while read s
do
  array[$i]=$(echo "$s" | awk -F\" '/line/{print $2}')
  i=$(( i + 1 ))
done < file.txt

# 3  
Old 09-24-2009
great, it works, thanks!
But I find it very slow and time consuming, perhaps I need to explain more deeply what kind of data I'm using.
It's a very long xml file with several fields, I'd post here a short exerpt and then explain what I'm planning to do.
Code:
<config version="1.0.0.2">
	<routing version="reserved">
		<route csRouteAlias="Customer1">
			<csRouteIpAddr>192.168.0.1</csRouteIpAddr>
			<csRouteIpMask>255.255.255.0</csRouteIpMask>
			<csRouteMacAddr>00.11.22.33.44.55</csRouteMacAddr>
			<dwRoutePid>111</dwRoutePid>
		</route>
		<route csRouteAlias="Customer2">
			<csRouteIpAddr>192.168.1.0</csRouteIpAddr>
			<csRouteIpMask>255.255.255.128</csRouteIpMask>
			<csRouteMacAddr>00.aa.bb.cc.dd.ee</csRouteMacAddr>
			<dwRoutePid>111</dwRoutePid>
		</route>
	</routing>
</config>

I've omitted a lot of irrelevant lines and stuff I don't need, now, I have some 14000 entries with the same tags, as in "Customer1" and "Customer2", up to "Customer14000"!!, so I thought if I save every "csRouteAlias" value in its array, and then every "csRouteIpAddr" values in another array, and so on, I can be able to "re-ensemble" the xml the way I want, using ${csRouteAlias[24] and ${csRouteIpAddr[24]} would give me a matched value according to the original XML, am I right?
Now, how can I do it and perhaps there is a better way?
TIA
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using arrays in bash using strings to bash built-in true

I have the following code and for some reason when I call the program using /home/tcdata/tatsh/trunk/hstmy/bin/bash/raytrac.bash --cmod=jcdint.cmod I get hasArgument = hasArgument = true Somehow the array element is returning even though I have not chosen the option. ... (41 Replies)
Discussion started by: kristinu
41 Replies

2. Shell Programming and Scripting

bc,getopt and arrays in bash

trying to sum elements in an array using bc and getopt,i have a file with names and thier vaules if the names appears 3 times i should multiply its value with 3 then find the sum of all the elements together cat foo.txt max 2.3 henry 3 fransis 4.5 max 2.3 henry 3 max 2.3 it should... (1 Reply)
Discussion started by: elginmulizwa
1 Replies

3. Shell Programming and Scripting

How to make arrays from strings in bash?

Hey all, This is my first post, and I am relatively new to linux/unix scripts. I am writing a bash script in which I am trying to extract one line from another file and parse specific words from the line into an array. So for example, I have a file called SortScans in which the first 5 lines... (9 Replies)
Discussion started by: camocazi
9 Replies

4. Programming

question about int arrays and file pointer arrays

if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Discussion started by: omega666
1 Replies

5. Shell Programming and Scripting

subtraction in bash arrays

hi i am using bash shell to perform some subraction. here is what i have: i have a while loop and am using i as a counter. diff= `expr ${ARRAY1} - ${ARRAY2}` for example array1 has -0.7145 and array2 has -0.7041. when i try the above command, i get expr: non-numeric argument. any... (6 Replies)
Discussion started by: npatwardhan
6 Replies

6. Shell Programming and Scripting

arrays and while loops in bash

hi guys, i have an array called ARRAY which has elements in it... i am trying to assign elements of ARRAY to master_array.. i get a =: command not found error.. i=0 while do ${master_array}=${ARRAY} ((i++)) done is there something i am missing? (4 Replies)
Discussion started by: npatwardhan
4 Replies

7. Shell Programming and Scripting

arrays in bash

hi guys, i have the following script and when i run it i get blank lines on the screen.. i am trying to display the contents of array var.. #!/usr/bin/bash var=`awk 'NR>20&&NR<31' try.sum | awk '{print $4}'` echo "${var}" (1 Reply)
Discussion started by: npatwardhan
1 Replies

8. Shell Programming and Scripting

Searching Bash Arrays

Hi, I am writing a bash shell script. I would like to execute a statement only if an array contains a specific value. For example: array=(1 3 5 7) I would like to execute the statement only if the value 3 is present in ${array}. Thanks for any help, Mike (1 Reply)
Discussion started by: msb65
1 Replies

9. Shell Programming and Scripting

Arrays in bash.need help

:confused: Is it possible to delete array elements dynamically.For instance,consider an array( a b c d ) ,now can i delete array (the third element 'c').So that the array becomes array(a b d).. Thanks in advance!! (1 Reply)
Discussion started by: tj23
1 Replies

10. UNIX for Dummies Questions & Answers

bash: setting arrays

Ok, I searched the threads a couple of times but couldn't find anything really relevant. Here's my problem, maybe you can help: I am running version 1.14.7 of the bash shell, on Red Hat Linux. I am trying to set an array like so: bash$> letters=(x y z) spaces are between the letters but... (3 Replies)
Discussion started by: Kriton
3 Replies
Login or Register to Ask a Question