Creating array from file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Creating array from file
# 8  
Old 09-10-2012
You probbly have more than 1 space between each field, try using awk instead of cut:

Code:
arr=( $(awk '{ print $4}'  out.txt)
echo ${arr[@]}

This User Gave Thanks to Chubler_XL For This Post:
# 9  
Old 09-10-2012
Quote:
Originally Posted by Lord Spectre
Yes bash, but the command doesn't work for me :-(

Code:
#!/bin/bash
arr=( $(cut -d" " -f4 out.txt) )  
echo ${arr[@]}

result empty array:
Of course: if you load the array in a subshell (scripts are run in subshells), how can you have it in the parent shell?
------- EDIT ------------------------------
Sorry, I misread your message: I thought you were running echo outside the script.
--
Bye
# 10  
Old 09-10-2012
Quote:
Originally Posted by Chubler_XL
You probbly have more than 1 space between each field, try using awk instead of cut:

Code:
arr=( $(awk '{ print $4}'  out.txt)
echo ${arr[@]}

Oh YES!!! More space between fields!!! Smilie
Your command works ok, except for the fact you've missed one ')' Smilie

Code:
arr=( $(awk '{ print $4}'  out.txt) )
echo ${arr[@]}

Thanks all for partecipating! Apreciated! Smilie

---------- Post updated at 04:04 PM ---------- Previous update was at 03:12 PM ----------

Guys sorry, whitout opening a new thread, is it possible to put into an array the whole line?

Code:
1234567890 1 1 9876[9876=1]
7634567890 1 1 3456[3456=1]
8934567890 1 4 0123[0123=1];1234[4567=3]
5534567890 1 1 0001[0101=1]
7834567890 1 1 3256[3256=1]
4534567890 1 1 7560[7560=1]
1334567890 1 1 900[0900=1]
0034567890 1 2 9899[9899=2]

So the array will be:
Code:
arr[0]="1234567890 1 1 9876[9876=1]"
arr[1]="7634567890 1 1 3456[3456=1]"
arr[2]="8934567890 1 4 0123[0123=1];1234[4567=3]"
....
....

Then later I'll take the 4th value and the other one to post-process them....
# 11  
Old 09-10-2012
To put into an array the whole lines of a file:
Code:
mapfile -t myarray <file

help mapfile for details.
--
Bye
# 12  
Old 09-10-2012
Note mapfile requires bash 4 is you are still on 3 you may need to use cat:

Code:
OLDIFS=$IFS
IFS=$'\n'
arr=( $(cat out.txt) )
IFS=$OLDIFS

This User Gave Thanks to Chubler_XL For This Post:
# 13  
Old 09-10-2012
Quote:
Originally Posted by Chubler_XL
Code:
IFS=$'\n'
arr=( $(cat out.txt) )

It may not be an issue for this data set, but, just in case, I'll mention that this approach deletes newlines since contiguous IFS whitespace is treated as a single delimiter.

If the situation requires preserving lines (including newlines) exactly as they appear in the text file, the following will do it:
Code:
while IFS= read -r line; do
    arr[${#arr[@]}]=$line;
done

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 14  
Old 09-11-2012
Thanks all for partecipating, I'll keep all your suggestion for future use! Smilie

For now, I'll create 4 array for each row in the output file. This will simplify my post-processing!

Smilie

Just a question, if I can, mapfile is not present in my bash. This because probably I don't have bash v4.
How can I upgrade to bash v4 ??
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Creating an array with options as an argument!

Hi Guys, I am writting a c shell script where I have to parse an input argument with options that could be an array. So far I have achieved where I could parse a single argument with option but failed when I try to create an array with the options. For example: This is on terminal window:... (2 Replies)
Discussion started by: dixits
2 Replies

2. UNIX for Dummies Questions & Answers

Creating an array

I am having trouble creating an array, I've tried everything google gives me but it won't work, and it seems as though it should. Using Ubunto 12.04 and bash. #!/bin/bash ARRAY=one two three echo ${ARRAY}When I do this I receive the error : two: not found and : Bad substitution When I... (3 Replies)
Discussion started by: jrymer
3 Replies

3. Shell Programming and Scripting

Creating bash array name from variable

Hi gurus, I need to create arrays from variables, via a loop. The issue I have is with the array name creation. How do I use a variable to define an array? I want to do something like declare -a $H where $H is my loop variable. I then need to add items to each array I've created,... (3 Replies)
Discussion started by: melias
3 Replies

4. Shell Programming and Scripting

Problem with array and creating directories

I have an interesting requirement. I have declaried an array like :- arr=`find . ! -name "." | xargs -I {} echo {} | cut -c 2-${#}` Then i will try to access the array elements like :- i=0 for i in ${arr}; do Here comes the confusions, the array elements are basically dir and files stored... (2 Replies)
Discussion started by: Renjesh
2 Replies

5. Shell Programming and Scripting

Creating array containing file names

I am wondering how I can save the file names (stored in $file or $fnames) in array which I can access with an index. alias MATH 'set \!:1 = `echo "\!:3-$" | bc -l`' set narg = $#argv while ($iarg < $narg) MATH iarg = $iarg + 1 set arg = $argv set opt = ` echo $arg | awk... (1 Reply)
Discussion started by: kristinu
1 Replies

6. Shell Programming and Scripting

creating variable array name

#!/bin/ksh #export CLASSPATH=$CLASSPATH:~dialp/cso/classes:/opt/oracle/product/8.1.6/jdbc/lib/classes12.zip #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/product/8.1.6/lib DATE="`date '+%m%d%Y'`" PATH=.:$PATH export PATH town_name='123' town_name='123' town_name='345'... (1 Reply)
Discussion started by: priyanka3006
1 Replies

7. Programming

Creating an array to hold posix thread ids: Only dynamic array works

I am facing a strange error while creating posix threads: Given below are two snippets of code, the first one works whereas the second one gives a garbage value in the output. Snippet 1 This works: -------------- int *threadids; threadids = (int *) malloc (num_threads * sizeof(int)); ... (4 Replies)
Discussion started by: kmehta
4 Replies

8. Shell Programming and Scripting

creating a dynamic array

i want to create an array the array elements are populated depending upon the number of entries present in a data file The data file is created dynamically how to achieve the same thanks (1 Reply)
Discussion started by: trichyselva
1 Replies

9. Shell Programming and Scripting

creating array variable

Hi all, i am quite fimiliar with shell scripting but i wouldn't regard myself as a semi professional at it. I am trying to create an array variable to read in 4 lines from a file using head and tail command in a pipeline and store each line into each array. I have done the scripting in unix... (2 Replies)
Discussion started by: scriptingmani
2 Replies

10. Shell Programming and Scripting

creating a dynamic array in ksh

Hi, Is it possible to create a dynamic array in shell script. I am trying to get the list of logfiles that created that day and put it in a dynamic array. I am not sure about it. help me New to scripting Gundu (3 Replies)
Discussion started by: gundu
3 Replies
Login or Register to Ask a Question