Pipe text from a file into an array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pipe text from a file into an array
# 1  
Old 02-02-2009
Pipe text from a file into an array

Hi Guys I have a question about filling up an array

I have a file called USER_FILE.txt
it contains the following:

Real Name:Thomas A Username:THOMAS_A
Real Name:Thomas B Username:THOMAS_B
Real Name:Thomas C Username:THOMAS_C
Real Name:Thomas D Username:THOMAS_D
Real Name:Thomas E Username:THOMAS_E

I want to put this data into an array
here is what I am doing:

set -a User_array [ < USER_FILE.txt ]

however I do not believe this is working as when I run

echo ${User_array[0]}

nothing appears

Basically I need
echo ${User_array[0]}
to contain:
Real Name:Thomas A Username:THOMAS_A

echo ${User_array[1]}
to contain:
Real Name:Thomas B Username:THOMAS_B

echo ${User_array[2]}
to contain:
Real Name:Thomas C Username:THOMAS_C

etc etc

what am I doing wrong?

Thanks G
# 2  
Old 02-02-2009
Hope this helps:

Code:
typeset -i line=0
typeset -i max=0
while read buf[line]
do
   (( line = line + 1 ))
done < foo
max=line # Get top of array

# print array
line=0
while (( line < max )) 
do
	echo "${buf[line]}"
   (( line = line + 1 ))
done

# 3  
Old 02-02-2009
Code:
c=0; while read line; do array[c]=`echo "$line"`; let c=$c+1; done < infile
echo ${array[1]}
Real Name:Thomas B Username:THOMAS_B
echo ${array[3]}
Real Name:Thomas D Username:THOMAS_D

# 4  
Old 02-02-2009
Thank you for your reply

But I am a unix Novice

I am having trouble understanding your code and incorporating it into a solution that I can use.

I have just tried this:

set -A array $(<USER_FILE.txt)
echo ${array[*]}

and it works to an extent, it creates an additional array value for each word rather than each line.

I can modify to the file USER_FILE.txt to include some identifier at the end like a ',' or something
# 5  
Old 02-02-2009
Quote:
Originally Posted by zaxxon
Code:
c=0; while read line; do array[c]=`echo "$line"`; let c=$c+1; done < infile
echo ${array[1]}
Real Name:Thomas B Username:THOMAS_B
echo ${array[3]}
Real Name:Thomas D Username:THOMAS_D


Your code has worked perfectly

thank you
G.
# 6  
Old 02-02-2009
1 last question

I now wish to print out the contents of the array using a loop.

I'm using

my_array_size=${#array[*]}
i=0; while [ $my_array_size > $i ]; do echo $i ${array[$i]}; let i=$i+1; done

however it will not stop at the last entry in the loop. It goes on to print 1024 empty files numbered 0-1023

what am I doing wrong?
# 7  
Old 02-02-2009
asldkjf

Explaination:
Code:
 
### declare some integer variables...
typeset -i line=0
typeset -i max=0
 
### read data file directly into the array...
 
while read buf[line]
do
### increment array index by one...
   (( line = line + 1 ))
### ... while reading from file 'foo'
done < foo
 
max=line # Get top of array
 
# print array
line=0
### while line index is less than maximum number of lines. . . . 
while (( line < max )) 
do
### print and increment array index.
    echo "${buf[line]}"
   (( line = line + 1 ))
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Linux

How to run commands with pipe from text file?

Hello, I have standard loop while read -r info; do command $info done < info in info text file I have multiple commands each on line that I want to execute. When I used them in console they worked, but not with this loop. This is one of the commands in info file: grep... (4 Replies)
Discussion started by: adamlevine
4 Replies

2. Shell Programming and Scripting

Array & text file

Hi all, i have a text file such as: 10 17:54:47,213 10 17:54:47,214 10 17:54:49,338 10 17:54:49,399 10 17:54:50,402 10 17:54:50,403 11 17:54:47,213 11 17:54:47,213 11 17:54:49,362 11 17:54:49,422 11 17:54:50,429 11 17:54:50,429 11 17:54:50,429 11 17:54:50,429 11 17:54:51,510 12... (10 Replies)
Discussion started by: sbamap
10 Replies

3. Shell Programming and Scripting

How to use pipe operator as simple character in text file?

Hello all, I have two files which are cmd and disk. `$cat cmd lsdev | grep -iw` `$cat disk hdisk2` Now I want to use the contents of both the files in a way such that `lsdev | grep -iw` command works for hdisk2 when I write the following script: `!#/bin/sh cmd1="$( sed -n... (4 Replies)
Discussion started by: ravi.trivedi
4 Replies

4. Shell Programming and Scripting

how to Insert values in multiple lines(records) within a pipe delimited text file in specific cols

this is Korn shell unix. The scenario is I have a pipe delimited text file which needs to be customized. say for example,I have a pipe delimited text file with 15 columns(| delimited) and 200 rows. currently the 11th and 12th column has null values for all the records(there are other null columns... (4 Replies)
Discussion started by: vasan2815
4 Replies

5. Shell Programming and Scripting

Bash Script Help...search then read from file: change text and pipe back...

Hello, I am trying to make a bash script that can pull data from a file and then change one part of said data. I want to search by username and pull the full line. That way there is a way to replace just one part of that line then return it back to the file. My Data is stored like: ... (1 Reply)
Discussion started by: serverfull
1 Replies

6. Shell Programming and Scripting

pipe command for array

Hi Folks, very basic question, how to do command piping for an array? suppose i have names as an array, when I write this script: #!/usr/bin/sh date=`date +%y%m%d`; names="a b" for name in ${names} do extract -tz +8 person 'income$|expense$' /home/ricki/$name/$date*.xml | tab -d -cols... (1 Reply)
Discussion started by: rickirick
1 Replies

7. UNIX for Dummies Questions & Answers

Replacing a field in pipe delimited TEXT File

Hi, I want to replace a field in a text delimited file with the actual number of records in the same file. HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ DTL|0|5464-1|0|02-02-2008|02-03-2008||||F||||||||| DTL|1|5464-1|1|02-02-2008|02-03-2008|1||JJJ... (3 Replies)
Discussion started by: ravi0435
3 Replies

8. UNIX for Dummies Questions & Answers

Problem working with Pipe Delimited Text file

Hello all: I have a following textfile data with name inst1.txt HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ DTL|H|5464-1|0|02-02-2008|02-03-2008||||F||||||||| DTL|D|5464-1|1|02-02-2008|02-03-2008|1||JJJ DTL|D|5464-1|2|02-02-2008|02-03-2008|1||JJJ... (9 Replies)
Discussion started by: ravi0435
9 Replies

9. Shell Programming and Scripting

input text from file into 2d array

Hi all I have a little brainscratcher here. I want to draw a pie chart from data in a text file. The drawing of the graph works fine, if I insert the data manually into a 2d array. Now I want to pull the data from a text file (which was created using a uniq -c command) see sample below.... (2 Replies)
Discussion started by: pietie
2 Replies

10. UNIX Desktop Questions & Answers

Wall, Write, select users, pipe a text file, HELP Before I'm Bald!

OK... I'm fairly new to unix having the admin handed to me on a platter w/almost no training. However, being a programmer, I do pick up things fairly easily, but this one is getting the best of me. I have a unix server that runs multiple versions of the same ERP system, hand crafted for our... (1 Reply)
Discussion started by: chimodel
1 Replies
Login or Register to Ask a Question