Struggling with arrays and delimited file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Struggling with arrays and delimited file
# 1  
Old 02-02-2009
Question Struggling with arrays and delimited file

Hi,

I am trying to use arrays in my script but can not seem to get it to work.

I have a file called sections, this contains headers from a tripwire log file, separated by "@" but could be "," if easier
The headers will be used to cut sections from the log file into another to be mailed.

sections looks like this:
Code:
Section: Unix File System@Total violations found
Rule Name: System Boot Changes@Added object name:

I have taken the following snippet of code for test purposes but can not get it to work. I get [: 0: unary operator expected

Code:
#!/bin/bash

SPArraya=( "${SPArraya[@]}" 'awk -F'@' '{ print $1 }' sections')
SPArrayb=( "${SPArrayb[@]}" 'awk -F'@' '{ print $2 }' sections')

#Displaying the contents of the array
i=0
while [ $i -lt $len ]
 do
FIRSTLINE=${SPArraya[$i]}
LASTLINE=${SPArrayb[$i]}
i=$((i+1))
echo "Section" $i
echo "First line is: " ${SPArraya[$i]}
echo "Last line is: " ${SPArrayb[$i]}
done


Can someone please help.
# 2  
Old 02-02-2009
Code:
SPArraya=( "${SPArraya[@]}" 'awk -F'@' '{ print $1 }' sections')

I'm as confused as the shell is as to what you're trying to do here. You've got strings inside strings inside strings going on, but the shell can't tell a starting ' and an ending ' apart because they're the same character. Maybe wrap the awk thing in double-quotes.
# 3  
Old 02-03-2009
Hi,

I am very confused too as I am struggling with the array syntax but really want to understand it.

to make this simpler if I had input.txt with the following text in it:
Code:
google,www.google.co.uk
bbc,www.bbc.co.uk
distrowatch,www.distrowatch.com

Then If I wanted to read this into an array and run commands on it how would this be done.

So I could get:

Code:
read sites < input.txt
{
array code
}
echo "Displaying" $array1 "Web Site"
links -dump $array1
echo "Displaying" $array2 "Web Site"
links -dump $array2
echo "Displaying" $array3 "Web Site"
links -dump $array3

How would this be done, excuse the lame example.
# 4  
Old 02-07-2009
Quote:
Originally Posted by pobman
Hi,

I am very confused too as I am struggling with the array syntax but really want to understand it.

to make this simpler if I had input.txt with the following text in it:
Code:
google,www.google.co.uk
bbc,www.bbc.co.uk
distrowatch,www.distrowatch.com

Then If I wanted to read this into an array and run commands on it how would this be done.

So I could get:

Code:
read sites < input.txt
{
array code
}
echo "Displaying" $array1 "Web Site"
links -dump $array1
echo "Displaying" $array2 "Web Site"
links -dump $array2
echo "Displaying" $array3 "Web Site"
links -dump $array3

How would this be done, excuse the lame example.
I'm not sure what you want the array for when you can deal with them one-by-one instead of storing them, but here goes:

Code:
# Make read split apart on ','
IFS=","
NAMES=()
SITES=()
N=0
while read NAME SITE
do
        echo "Displaying $NAME $SITE"
        NAMES[$N]="$NAME"
        SITES[$N]="$SITE"
        N=$((N+1))
done < input.txt

# 5  
Old 02-08-2009
Bug

Perfect thanks just what I wanted.Smilie
# 6  
Old 02-08-2009
Quote:
Originally Posted by corona688
i'm not sure what you want the array for when you can deal with them one-by-one instead of storing them, but here goes:

Code:
# make read split apart on ','
ifs=","
names=()
sites=()
n=0
while read name site
do
        echo "displaying $name $site"
        names[$n]="$name"
        sites[$n]="$site"
        n=$((n+1))


No need for a counter:

Code:
names[${#names[@]}]="$name"
sites[${#sites[@]}]="$site"

Quote:
Code:
done < input.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need to convert a pipe delimited text file to tab delimited

Hi, I have a rquirement in unix as below . I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column. ex: Input Text file: 1|A|apple 2|B|bottle excel file to be generated as output as... (9 Replies)
Discussion started by: raja kakitapall
9 Replies

2. Shell Programming and Scripting

How to make tab delimited file to space delimited?

Hi How to make tab delimited file to space delimited? in put file: ABC kgy jkh ghj ash kjl o/p file: ABC kgy jkh ghj ash kjl Use code tags, thanks. (1 Reply)
Discussion started by: jagdishrout
1 Replies

3. Shell Programming and Scripting

Help with converting Pipe delimited file to Tab Delimited

I have a file which was pipe delimited, I need to make it tab delimited. I tried with sed but no use cat file | sed 's/|//t/g' The above command substituted "/t" not tab in the place of pipe. Sample file: abc|123|2012-01-30|2012-04-28|xyz have to convert to: abc 123... (6 Replies)
Discussion started by: karumudi7
6 Replies

4. Shell Programming and Scripting

Parsing file: struggling against sed command

Hello fellows, Sure you can help this poor guy that is struggling against sed command, being unable to tame it I have a lot of files like this: From this one, I need to obtain values highlighted in bold/red To do so, I am executing this piece of code inside a loop: ... (10 Replies)
Discussion started by: manolain
10 Replies

5. Shell Programming and Scripting

How to convert a space delimited file into a pipe delimited file using shellscript?

Hi All, I have space delimited file similar to the one as shown below.. I need to convert it as a pipe delimited, the values inside the pipe delimited file should be as highlighted... AA ATIU2345098809 009697 005374 BB ATIU2345097809 005445 006518 CC ATIU9685098809 003215 003571 DD... (7 Replies)
Discussion started by: nithins007
7 Replies

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

7. Shell Programming and Scripting

convert a pipe delimited file to a':" delimited file

i have a file whose data is like this:: osr_pe_assign|-120|wg000d@att.com|4| osr_evt|-21|wg000d@att.com|4| pe_avail|-21|wg000d@att.com|4| osr_svt|-11|wg000d@att.com|4| pe_mop|-13|wg000d@att.com|4| instar_ready|-35|wg000d@att.com|4| nsdnet_ready|-90|wg000d@att.com|4|... (6 Replies)
Discussion started by: priyanka3006
6 Replies

8. UNIX for Advanced & Expert Users

Help- Unix File Compare- Struggling

I had posted this earlier about 3 weeks ago and had recieved a response and I did sort both the files and the comm command is still not working. Can someone please assist me, I would really appreciate it. Below is what I am trying to do I need to compare File A with File B and create FILE C... (2 Replies)
Discussion started by: guiguy
2 Replies

9. Shell Programming and Scripting

Struggling with a text file

Hi, I am struggling with the following... I try to grep out information of a text file I got with lynx, a text browser. The text file I get from lynx with dump is attached in the bottom. What I would like to get is another file containing the astro-ph/98324 (number) and title and list of... (13 Replies)
Discussion started by: pau
13 Replies

10. Shell Programming and Scripting

Converting Tab delimited file to Comma delimited file in Unix

Hi, Can anyone let me know on how to convert a Tab delimited file to Comma delimited file in Unix Thanks!! (22 Replies)
Discussion started by: charan81
22 Replies
Login or Register to Ask a Question