Creating array from file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Creating array from file
# 1  
Old 09-10-2012
Creating array from file

Dear community,
how can I create an array from file taking only the 4th field?

out.txt file is something like this:
Code:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20

So the final array should be:
Code:
4 8 12 16 20

With this command I created an array with all the fields, but I need only the 4th one:
Code:
arr1=( $(cat out.txt | tr '\n' ' ') )

# 2  
Old 09-10-2012
You are not specifying what shell you use; looks like it's bash; try
Code:
$ arr=( $(cut -d" " -f4 test) )
$ echo ${#arr[@]} , ${arr[@]}
5 , 4 8 12 16 20

# 3  
Old 09-10-2012
Quote:
Originally Posted by RudiC
You are not specifying what shell you use; looks like it's bash; try
Code:
$ arr=( $(cut -d" " -f4 test) )
$ echo ${#arr[@]} , ${arr[@]}
5 , 4 8 12 16 20

Yes bash, but the command doesn't work for me :-(

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

result empty array:
Code:
# ./test.sh 

#

---------- Post updated at 02:59 PM ---------- Previous update was at 02:55 PM ----------

Aaah wait, this because I've not specify the correct out.txt file:

So I have as out.txt:
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]

And this out.txt file with your command produce an empty array! :-(
# 4  
Old 09-10-2012
Pls try the cut cmd from the keyboard, as well as the echo, and post the results.

your new out.txt:
Code:
echo ${arr[@]}
9876[9876=1] 3456[3456=1] 0123[0123=1];1234[4567=3] 0001[0101=1] 3256[3256=1] 7560[7560=1] 900[0900=1] 9899[9899=2]

# 5  
Old 09-10-2012
In bash you can use mapfile:
Code:
mapfile -t myarray < <(cut -d" " -f4 file)

--
Bye
# 6  
Old 09-10-2012
Quote:
Originally Posted by RudiC
Pls try the cut cmd from the keyboard, as well as the echo, and post the results.

your new out.txt:
Code:
echo ${arr[@]}
9876[9876=1] 3456[3456=1] 0123[0123=1];1234[4567=3] 0001[0101=1] 3256[3256=1] 7560[7560=1] 900[0900=1] 9899[9899=2]

The cut commnad reply me with blank space:
Code:
cut -d" " -f4 out.txt

















#

# 7  
Old 09-10-2012
Try with -f1, -f2, -f3

OR: provide an octal/hexdump of out.txt
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