Visit Our UNIX and Linux User Community


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


Previous Thread | Next Thread
Test Your Knowledge in Computers #611
Difficulty: Easy
You can enter the Python interpreter by simply typing python on the command line (assume Python is installed).
True or False?

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

Featured Tech Videos