How to parse a string into variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to parse a string into variables
# 1  
Old 02-21-2005
How to parse a string into variables

I'm working in korn shell and have a variable which contains a string like:
aa_yyyymmdd_bbb_ccc_ddd.abc. I want to treat the _ and . as delimiters and parse the string so I end up with 6 values in variables that I can manipulate. My original plan was to use
var1=`echo $sting1 | cut -c1-c2` but now the requirements have changed so the position is no longer fixed.

Please help.
# 2  
Old 02-21-2005
Code:
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc"
aa_yyyymmdd_bbb_ccc_ddd.abc
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc"
aa_yyyymmdd_bbb_ccc_ddd.abc
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"." -f 2
abc
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 1
aa
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 2
yyyymmdd
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 3
bbb
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 4
ccc
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 5
ddd.abc
$ echo "aa_yyyymmdd_bbb_ccc_ddd.abc" | cut -d"_" -f 5 | cut -d"." -f 1
ddd

# 3  
Old 02-21-2005
$ oldIFS=$IFS
$ IFS=._
$ set aa_yyyymmdd_bbb_ccc_ddd.abc
$ set $1
$ echo $1
aa
$ echo $2
yyyymmdd
$ echo $3
bbb
$ IFS=oldIFS
# 4  
Old 02-22-2005
Thanks for the help!
# 5  
Old 05-27-2009
What if we are not sure about the lenght for eg the var can be

aaa_bbb_ccc_ddd.abc
or aaa_bbb.abc
or aaa.abc
# 6  
Old 05-27-2009
Well, you can loop over them.

Code:
-bash-3.2$ cat test.txt
aaa_bbb_ccc_ddd.abc

-bash-3.2$ awk -F"[_.]" '{ for (i = 1; i<=NF;i++) { print $(i); } }' test.txt
aaa
bbb
ccc
ddd
abc

# 7  
Old 05-28-2009
Quote:
Originally Posted by peter35james
What if we are not sure about the lenght for eg the var can be

aaa_bbb_ccc_ddd.abc
or aaa_bbb.abc
or aaa.abc

Ygor's solution works no matter what the lengths are. The only change I'd make is that I'd replace "set $1" with:

Code:
set -f
set -- $1
set +f

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parse variables from C++ to shell

Hi All, #include <iostream> int main() { std::int foo = 34; system("mkdir /home/linuxUser/fooDir"); system("vi fooFile") system("write foo in fooFile") foo = 43; foo = read foo from fooFile; std::cout << "foo = " << foo ; } result should be foo = 34 can... (3 Replies)
Discussion started by: linuxUser_
3 Replies

2. Linux

Parse ; deliminated variable to create variables

Hi there, would appreciate some help on this parsing problem if anybody can help im trying to parse a variable with the following output, each of the values im trying to parse are deliminated by a ; T192... (8 Replies)
Discussion started by: scottish_jason
8 Replies

3. Shell Programming and Scripting

parse a mixed alphanumeric string from within a string

Hi, I would like to be able to parse out a substring matching a basic pattern, which is a character followed by 3 or 4 digits (for example S1234 out of a larger string). The main string would just be a filename, like Thisis__the FileName_S1234_ToParse.txt. The filename isn't fixed, but the... (2 Replies)
Discussion started by: keaneMB
2 Replies

4. Shell Programming and Scripting

Need to parse lines in a file into two words and assign the values to two variables

For example, I have a file with below lines containing VOB tags and VOB paths. * /vobs/fts/FTSUSM20_VOB /ccvobsslx01/projects/vobs/eml/FTSUSM20_VOB * /vobs/fts/FTS20_VOB /ccvobsslx01/projects/vobs/eml/FTS20_VOB * /vobs/pmv/PMS_VOB /ccvobsslx01/projects/vobs/cpm/_/PMS_VOB *... (4 Replies)
Discussion started by: senthilkc
4 Replies

5. UNIX for Dummies Questions & Answers

Parse or cut concat variables to individual values

Hello I need to pass some environment parameters to a datastage job and am getting an error when trying to send the complete concatinated variable. I have decided to parse out just the values and send as parameters but am struggling to find the best way to do this (actually I am not very... (3 Replies)
Discussion started by: LynnC
3 Replies

6. Shell Programming and Scripting

Parse config file and store the values in variables

Hi, I have a config file that has blank, commented lines. I need to escape commented lines, blank lines, parse the remaining lines and store them in variables or array. the config file contains the following lines. # config file # Define Oracle User ORA_USER=abcde ORA_PASS=xyzabc... (8 Replies)
Discussion started by: Lakshmi Chowdam
8 Replies

7. Shell Programming and Scripting

Want to parse output for variables in Bash

Trying to finish up my script that automates some video encoding work. Situation: There is an MKV file to be transcoded. Problem: MKVINFO will give a bunch of output about an MKV file, included in that output are two lines I am interested in: | + Default duration: 41.708ms (23.976 fps... (9 Replies)
Discussion started by: randyharris
9 Replies

8. Shell Programming and Scripting

How to: Parse text string into variables using Korn shell

I am writing a script to keep check on free disk space, and I would like to find a way to parse $LINE (see code below) into a numeric value (for free disk space percentage) and a string value (for mount point). If possible, I would like to avoid sed or any additional use of awk since I am not very... (7 Replies)
Discussion started by: shew01
7 Replies

9. Shell Programming and Scripting

How can I parse a record found in /etc/passwd into variables?

I am working with the Oracle 10.2.0.3 job scheduler on Solaris 10, and unfortunately, the scheduler executes scripts in such a way that several default shell environment variables are not defined. For example, $HOME, $USER, and $LOGNAME are missing. How can I parse the appropriate record in... (7 Replies)
Discussion started by: shew01
7 Replies

10. Shell Programming and Scripting

How to parse config variables from external file to shell script

How do i use a config.txt to recursively pass a set of variables to a shell script eg my config.txt looks like this : path=c://dataset/set1 v1= a.bin v2= b.bin path=c://dataset/set2 v1= xy.bin v2= abc.bin .................. and so on . and my testscript : (2 Replies)
Discussion started by: pradsh
2 Replies
Login or Register to Ask a Question