Splitting comma separated values into an array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Splitting comma separated values into an array
# 1  
Old 06-24-2005
Splitting comma separated values into an array

I'm attempting to create a KSH array out of a string like this: ",,,value1,value2,,"

I have created the array but I only get two elements, one for value1 and one for value2.

I have ended up with something like this but I don't like it:
Code:
set -A JUNK
xx=0
for i in $(print ",,,value1,value2,,"  | nawk '{gsub(/,/," \n",$0);print}')
do
    print ".$i."
    JUNK[xx]=$i
    (( xx += 1 ))
done
for i in "${JUNK[@]}"
do
    print ".$i."
done

The results:
Code:
. .
. .
. .
.value1 .
.value2 .
. .
. .

If i leave out the space character before the newline in this gsub command:
Code:
gsub(/,/," \n",$0);

...I get this output:
Code:
.value1 .
.value2 .

I really don't want the spaces at the end of each string and I nead an array of every CSV field (even the empty values).

I have tried several approaches including changing IFS and looping through the fields but this doesn't seem to work at all.

What am I missing here?

Thomas
# 2  
Old 06-24-2005
Where do these csv lines come from? I think that I've seen this sort of question before.

And I think that there is an issue that arises when the data contains a comma. What happens then? I seem to remember that the field with a comma is surrounded by quotes, but I don't remember for sure.

I guess that there is (a perhaps null) field before the first comma and after the last comma. Is this correct?
# 3  
Old 06-24-2005
Okay, now I am confused.

Believe it or not, my first inclination was to code something like this:
Code:
typeset IFS=,
set -A JUNK $(print ",,,value1,value2,,")

set | grep JUNK

JUNK[0]=''
JUNK[1]=''
JUNK[2]=''
JUNK[3]=value1
JUNK[4]=value2
JUNK[5]=''

I can not figure out why didn't work previously! Smilie

Ah well, I've been wrestling with it for a while and now it suddenly works.
I simply don't get it.

It looks like this case is closed.

Thomas
# 4  
Old 06-24-2005
Quote:
Originally Posted by Perderabo
Where do these csv lines come from? I think that I've seen this sort of question before.

And I think that there is an issue that arises when the data contains a comma. What happens then? I seem to remember that the field with a comma is surrounded by quotes, but I don't remember for sure.

I guess that there is (a perhaps null) field before the first comma and after the last comma. Is this correct?
Sorry, our postings must have crossed paths. The csv values are going to be generated from a Java program that I can direct the design of at this stage. The values represent customer parameters to drive some data loads and they are positional. If there were two parameters I would be making simple assignments but since there are several, I decided to use an array.

I can have any number of csv lines to parse during a load session so it's not like picking up a one-time set of control parameters.

As I indicated in my last post, I have apparently ended up in the most logical approach working but I don't know why. I have worked through this for hours and used, what I thought, the exact approach that I documented with no luck. I stumbled on the working lines when I thought that commas could have been the issue and I replaced them with colons. When colons worked, I tried commas again. They worked too!

I don't get it.

BTW, it seems that you are correct with respect to the quotation marks but that is inconsequential. I only care if the parameter was provided or not. I can cope with quotes.

thomas

Last edited by tmarikle; 06-24-2005 at 07:04 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert fixed value fields to comma separated values

Hi All, Hope you are doing Great!!!. Today i have came up with a problem to say exactly it was for performance improvement. I have written code in perl as a solution for this to cut in specific range, but it is taking time to run for files thousands of lines so i am expecting a sed... (9 Replies)
Discussion started by: mad man
9 Replies

2. Shell Programming and Scripting

Assign comma separated values to a variable

Hi All, I wrote a database command that queries our application and outputs a whole bunch of values to a text file. I need to assign the output to two values. Here is a sample of the output: valueOne, checkOne valueTwo, checkTwo valueThree, checkThree I would like... (9 Replies)
Discussion started by: jeffs42885
9 Replies

3. Shell Programming and Scripting

Comma separated values to individual lines

My OS : RHEL 6.7 I have a text file with comma separated values like below $ cat testString.txt 'JOHN' , 'KEITH' , 'NEWMAN' , 'URSULA' , 'ARIANNA' , 'CHENG', . . . . I want these values to appear like below 'JOHN' , 'KEITH' , 'NEWMAN' , 'URSULA' , 'ARIANNA' , 'CHENG', .... (4 Replies)
Discussion started by: kraljic
4 Replies

4. Shell Programming and Scripting

Needs help in parsing comma separated values

hello experts, i am retrieving values in variables jobKey and jobName within my shell script. these values are returned to me within braces and i am using following command to remove those braces: jobKeys=`echo $jobKeys | sed 's:^.\(.*\).$:\1:'` jobNames=`echo $jobNames | sed... (1 Reply)
Discussion started by: avikaljain
1 Replies

5. UNIX for Dummies Questions & Answers

[solved] Comma separated values to space separated

Hi, I have a large number of files which are written as csv (comma-separated values). Does anyone know of simple sed/awk command do achieve this? Thanks! ---------- Post updated at 10:59 AM ---------- Previous update was at 10:54 AM ---------- Guess I asked this too soon. Found the... (0 Replies)
Discussion started by: lost.identity
0 Replies

6. Shell Programming and Scripting

To agregate Comma separated values

Hi pls help me to get the code: i have a file in which content is : 2.01304E+11 2.01304E+11 ori 2 01:00 2.01304E+11 2.01304E+11 ori 2 01:02 2.01304E+11 2.01304E+11 ori 3 01:02 2.01304E+11 2.01304E+11 ori 3 ... (7 Replies)
Discussion started by: Aditya.Gurgaon
7 Replies

7. Shell Programming and Scripting

Assigning Multiple Comma Separated IP's To A Bash Array

I am in the process of creating a BASH shell scripts for a project at work. So the scenario is as such: I have a file with each line entry separated by ':' ... (3 Replies)
Discussion started by: metallica1973
3 Replies

8. Shell Programming and Scripting

Input Validation of comma separated values

Hello all, I am working on a script and have the first part solved of numerical input validation. Below the code validates that the input is a numerical value between 100 and 1000. If not, it errors out. Now I need to be able to read values separated by a comma. For example, instead of my... (5 Replies)
Discussion started by: LinuxRacr
5 Replies

9. Shell Programming and Scripting

script to store comma separated values in different variables

Hello friends, I need ur help.I want to write a script. The script should read contents from a file namely xyz. e.g xyz abcd,1234,efgh,7854378 dhnsa,dsakjkdl,43432,ZXDsa the script should store comma (,) seperated values in different variables. Once pointer will reach end of line (\n), it should... (1 Reply)
Discussion started by: akhtar.bhat
1 Replies

10. Shell Programming and Scripting

Extracting the values separated by comma

Hi, I have a variable which has a list of string separated by comma. for ex , Variable=/usr/bin,/usr/smrshbin,/tmp How can i get the values between the commas separately using shell scripts.Please help me. Thanks, Padmini. (6 Replies)
Discussion started by: padmisri
6 Replies
Login or Register to Ask a Question