How to split the string value to an array?


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to split the string value to an array?
# 1  
Old 01-20-2020
How to split the string value to an array?

Test1.txt
Code:
    Tom is hot

Test.sh
Code:
     filename="/directory/Test1.txt"
     set - A store
     while IFS= read value
     do
          awk '{split($value,store," ")}'
     done < "$filename"
     echo ${#sore[@]}

From the code in the executing file, I would like each word in each line to be stored in an array. Later I would like the output to be printed out like below with more lines in the content, but each column of the line is limited to 3.
Subject Verb Adjective
Tom is hot
Jane is sweet
..............................................

I tried executing the code, but it seems that no value is stored into the array....I printed out the number of array in store and it shows 0....... How to split the string and append into the array?
# 2  
Old 01-20-2020
Quote:
Originally Posted by TestKing
How to split the string and append into the array?
Code:
php -a   # enter interactive mode in terminal for testing

Code:
php > $line = "Tom is hot";
php > $array = explode(' ',$line);
php > print_r($array);
Array
(
    [0] => Tom
    [1] => is
    [2] => hot
)
php >

# 3  
Old 01-20-2020
Hi
Maybe so
Code:
store=($(<$filename))

# 4  
Old 01-20-2020
Code:
$python

Code:
>>> line = "Tom is hot"
>>> array = line.split(' ')
>>> print(array)
['Tom', 'is', 'hot']

# 5  
Old 01-20-2020
associative array
Code:
declare -A store
eval read store[{$(fmt -1 $filename | paste -sd,)}] < <(seq -s' ' $(wc -w <$filename))
echo ${store[@]}
echo ${!store[@]}

--- Post updated at 10:19 ---

another way to write to an associative array. This method is more flexible.
Code:
declare -A store
eval store=($(awk '{print "[" $0 "]=" NR}' RS='[[:space:]]+' $filename))
echo ${store[@]}
echo ${!store[@]}

This User Gave Thanks to nezabudka For This Post:
# 6  
Old 01-20-2020
Hey nezabudka ,

Please include the input and output (strings / text) in your code samples, so we can see exactly your input and outputs.

Keep up the good work and....

Thanks!
This User Gave Thanks to Neo For This Post:
# 7  
Old 01-20-2020
We can build a matrix!
Code:
declare -A store store2
eval read store[$(awk 'END {print "{1.." NR "},{1.." NF "}"}' $filename)] < <(fmt -1000 $filename)
for i in {1..2},{1..3}; do echo store[$i] = ${store[$i]}; done

If the number of columns is not constant for all lines
Code:
eval read store2[$(awk '{if(NF>max) max=NF} END {print "{1.." NR "},{1.." max "}"}' $filename)] < <(fmt -1000 $filename)

Code:
GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)

How to split the string value to an array?-arraypng

Last edited by nezabudka; 01-20-2020 at 04:20 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to split a string into array?

value=malayalam # i need to store the value in an array by splitting the character #the output i need is m a l a y a l a m Please use CODE tags for output data as well as required by forum rules! (5 Replies)
Discussion started by: Meeran Rizvi
5 Replies

2. Shell Programming and Scripting

Perl split and array

Hello, I have the following code: while ($line = <fd_in>) { 126 $line = " " . $line ; 127 print "our_line:$line\n"; 128 @list = split (/\s+/, $line) ; 129 print "after_split:@list\n"; 130 print "$list\t$list\t$list\t$list\t$list\t$list$list\t\n"; 131 $len =... (2 Replies)
Discussion started by: Zam_1234
2 Replies

3. Shell Programming and Scripting

Split string into map (Associative Array)

Hi Input: { committed = 782958592; init = 805306368; max = 1051394048; used = 63456712; } Result: A map (maybe Associative Array) where I can iterate through the key/value. Something like this: for key in $map do echo key=$key value=$map done Sample output from the map: ... (2 Replies)
Discussion started by: chitech
2 Replies

4. Shell Programming and Scripting

split string into array in shell

Hi all, I want to split a string into array based on given delimiter, for example: String: "foo|bar|baz" with delimiter "|" into array: strArr to strArr with values foo, bar and baz. Thanks a lot. Roy987 (5 Replies)
Discussion started by: Roy987
5 Replies

5. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

6. Shell Programming and Scripting

split and making an array inside another array

I want to run an awk split on a value that has been pushed through an array and I was wondering what the syntax should be?? e.g. running time strings through an array and trying to examine just minutes: 12:25:30 10:15:13 08:55:23 awk ' NR==FNR{ ... (2 Replies)
Discussion started by: dcfargo
2 Replies

7. Shell Programming and Scripting

split variable values into array

i have these values inside variable $blah BUNGA TERATAI 3 5055 ITH 1 0 0 0 1 1 JADE TRADER 143W ITH 4 0 0 0 4 4 MOL SPLENDOR 0307A ITH 3 0 0 0 3 3 so how do I split them into array with the... (4 Replies)
Discussion started by: finalight
4 Replies

8. Shell Programming and Scripting

[KSH] Split string into array

Hi, Is there any way to convert a string into an array in KSH? In other words I want to split the string like this: STRING="one two three four" into an array of 4 values splitting on white space. The array should be similar to the one that would be created with the following command: ... (3 Replies)
Discussion started by: piooooter
3 Replies

9. Shell Programming and Scripting

How to get array to not split at spaces?

I have been working on some code for a while, that will parse a log file, look for a specified time discrepancy between entries, and then print that line +/- n other lines out to a file... #!/bin/bash file=$1 # The input log file maxTime=$2 # The time discrepancy to look for n=$3 ... (1 Reply)
Discussion started by: jjinno
1 Replies

10. Shell Programming and Scripting

split to array in perl

Collegues I have flat file in the following format. 137 (NNP Kerala) (NNP India) 92 (NN Rent) (NN Range) 70 (NNP Thiruvananthapuram) (NNP Kerala) 43 (NNP Tourist) (NNP Home) 40 (NNP Reserve) (NNP Now) 25 (SYM @) (NN hotelskerala) 25 (NNP Thiruvananthapuram-695001) (NNP Kerala) 23 (NN... (3 Replies)
Discussion started by: jaganadh
3 Replies
Login or Register to Ask a Question