Parsing String


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parsing String
# 1  
Old 06-10-2009
Parsing String

Hello All,

I have a case, wherein I have a string of the format
"attr1=value1 attr2=value2 attr3=value3 attr4=value4"

How do I extract the value associated with for a given attributename. For eg. I need to get a value of "value2" when I give an input for attribute name as "attr2". Note, each attribute values is space seperated and value can contain / or , or - as part of it.

Thanks
Sunil Kumar
# 2  
Old 06-10-2009
perl code, one possibility:

Code:
my $string = 'attr1=value1 attr2=value2 attr3=value3 attr4=value4';
my $attr = 'attr2';
my ($value) = $string =~ /$attr=([^ ]+) /;
print $value;

# 3  
Old 06-10-2009
if you have Python
Code:
#!/usr/bin/env python
d={}
string='attr1=value1 attr2=value2 attr3=value3 attr4=value4'
for i in string.split():
    attr,val = i.split("=")
    d[attr]=val
choice = raw_input("Enter attribute: ")
if d.has_key(choice):
    print d[choice]
else:
    print "No such attribute: %s " % choice

output
Code:
# ./test.py
Enter attribute: attr
No such attribute: attr

# ./test.py
Enter attribute: attr2
value2

# 4  
Old 06-10-2009
Thank you very much for the quick reply.
Unfortunately, I am not using phython and I am doing using ksh.

And the below statements are not working for me
my $string = 'attr1=value1 attr2=value2 attr3=value3 attr4=value4';
my $attr = 'attr2';
my ($value) = $string =~ /$attr=([^ ]+) /;
print $value;


For eg:
<user1@test>my $string = 'attr1=value1 attr2=value2 attr3=value3 attr4=value4';
ksh: string: parameter not set
# 5  
Old 06-10-2009
I did say my code was perl
# 6  
Old 06-10-2009
Note sure what I am missing. I tried like below and got the error
<user1@test>perl $string = 'attr1=value1 attr2=value2 attr3=value3 attr4=value4';
ksh: string: parameter not set

Since, I am using ksh as the shell, I am tried as below.
<user1@test>string="attr1=value1 attr2=value2 attr3=value3 attr4=value4"
<user1@test>attr="attr2"
<user1@test>perl ($value) = $string =~ /$attr=([^ ]+) /;
ksh: syntax error: `(' unexpected
<user1@test>

Please let me know on this.

Thanks for your quick reply.
Sunil Kumar
# 7  
Old 06-10-2009
awk
Code:
awk 'BEGIN{
 string ="attr1=value1 attr2=value2 attr3=value3 attr4=value4"
 m=split(string,str," ")
 printf "Enter attribute: "
 getline choice <"/dev/stdin" 
 for (i=1;i<=m;i++){    
    if ( str[i] ~ choice){
       split(str[i],a,"=")   
       print "value is " a[2]
    }
 }
}'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parsing a long string string problem for procmail

Hi everyone, I am working on fetchmail + procmail to filter mails and I am having problem with parsing a long line in the body of the email. Could anyone help me construct a reg exp for this string below. It needs to match exactly as this string. GetRyt... (4 Replies)
Discussion started by: cwiggler
4 Replies

2. Shell Programming and Scripting

Need help on parsing string

for i in `cat list`;do lol=`curl -m 2 -s ${i} | grep 'class=info' | cut -d '>' -f14 | cut -d '<' -f1 | sed '/^$/d'`; if ;then echo "$i,$lol" >> dirty; echo "$i,$lol";fi; done cut: you must specify a list of bytes, characters, or fields Try `cut --help' for more information. it gave me that... (0 Replies)
Discussion started by: p33plime
0 Replies

3. Shell Programming and Scripting

String parsing

Hi, name=VDSL_TTV_ HN_SUB create coid=MA5603U phone=5678 portpolicy=APortSelectionPolicy rfu10=TTV rfu3=Dot1q sz7_portmode=VDSL2 rfu5=1234 srprofile.sy_profname=$ADSL_TTV_SubProfile1 I have a line like this. Its a single line.I need the output as name=VDSL_TTV_ HN_SUB create... (6 Replies)
Discussion started by: giri_luck
6 Replies

4. Shell Programming and Scripting

String parsing

Hi, name=VDSL_TTV_ HN_SUB create coid=MA5603U phone=5678 portpolicy=APortSelectionPolicy rfu10=TTV rfu3=Dot1q sz7_portmode=VDSL2 rfu5=1234 srprofile.sy_profname=$ADSL_TTV_SubProfile1 I have a line like this. Its a single line.I need the output as name=VDSL_TTV_ HN_SUB create... (1 Reply)
Discussion started by: giri_luck
1 Replies

5. Shell Programming and Scripting

String-parsing!

I need the perl solution for the following : $string="I LOVE INDIA" now, in a new string i need the first character of each word... that is string2 should be "ILN". (10 Replies)
Discussion started by: vijay_0209
10 Replies

6. Shell Programming and Scripting

Parsing of file for Report Generation (String parsing and splitting)

Hey guys, I have this file generated by me... i want to create some HTML output from it. The problem is that i am really confused about how do I go about reading the file. The file is in the following format: TID1 Name1 ATime=xx AResult=yyy AExpected=yyy BTime=xx BResult=yyy... (8 Replies)
Discussion started by: umar.shaikh
8 Replies

7. Shell Programming and Scripting

parsing a string

hi i am new to Shell scripting i have a string "hostName=lpdma520_dev_ipc_us_aexp_com" now i need to parse the string as "var1=lpdma520" please help (7 Replies)
Discussion started by: satish@123
7 Replies

8. Programming

parsing string in c

how can i remove the special characters hi iam print the string variable . suppse: while(str!=NULL) printf("******* %s ********** %d ",str,strlen(str)); output as: ****srinu ******** 5 **** phani******** 63 ****srinu ******** 5 **** phani******** 63 so my problem is how can i... (3 Replies)
Discussion started by: phani_sree
3 Replies

9. Shell Programming and Scripting

Need help on parsing string

String example: /vmfs/volumes/46000471-71d7c414-8f74-0013210cddc3/gistst/gistst.vmx What I would like to do is create a variable and save gistst in it. I thought if I could create an array and split it by '/' then I could use the 4th array element or if they was a way to do a... (13 Replies)
Discussion started by: magnacrazy
13 Replies

10. UNIX for Dummies Questions & Answers

Parsing string

I am passing argument 1-13 to a sh file. I want to parse the string and the get the numbers on either side of "-" in two different variables. I am not familiar with unix .. how can i do this? (3 Replies)
Discussion started by: rolex.mp
3 Replies
Login or Register to Ask a Question