Need help parsing a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help parsing a string
# 1  
Old 09-13-2006
Need help parsing a string

Hi,
I'm writing a shell script that outputs, among other things, some of the information that is outputted by the mysqladmin status command.

The output of the command looks like this:
Uptime: 816351 Threads: 19 Questions: 80719739 Slow queries: 1419 Opens: 15903523 Flush tables: 1 Open tables: 4948 Queries per second avg: 98.879

I need to output the Queries per second, Open tables, and Threads. I know I can count the words on the line and do a cut, but I'd rather do it in a neater fashion.

Is there an easy way to parse this line so that it ouputs:
Uptime: xxxx
Threads: xxx
etc.

and once I have it in that format, I can parse to get the values I want.

Thanks.
# 2  
Old 09-13-2006
This will give you a start:
Code:
echo "Uptime: 816351 Threads: 19 Questions: 8017" | awk '{ print $1 $2 "\n" $3 $4 "\n" $5 $6 }'

# 3  
Old 09-13-2006
Code:
echo "Uptime: 816351 Threads: 19 Questions: 8017" | read a b c d e f
echo $a $b
echo $c $d
echo $e $f


Last edited by anbu23; 09-13-2006 at 12:33 PM..
# 4  
Old 09-13-2006
thanks. The problem is that as you get to the later words, some of the "titles" have more than one word such as "open tables". How can I parse that?
# 5  
Old 09-13-2006
Code:
echo "Slow queries: 1419 Opens: 15903523 Flush tables: 1" | 
read a b c d e f g h
echo $a $b $c
echo $d $e
echo $f $g $h

# 6  
Old 09-13-2006
Try...
Code:
$ cat file
Uptime: 816351 Threads: 19 Questions: 80719739 Slow queries: 1419 Opens: 15903523 Flush tables: 1 Open tables: 4948 Queries per second avg: 98.879
$ awk '{for(i=1;i<=NF;i++)printf $i ($(i-1)~/:$/?ORS:OFS) }' file
Uptime: 816351
Threads: 19
Questions: 80719739
Slow queries: 1419
Opens: 15903523
Flush tables: 1
Open tables: 4948
Queries per second avg: 98.879
$

# 7  
Old 09-14-2006
Alternative in Python:

Code:
>>> import re
>>> s = 'Uptime: 816351 Threads: 19 Questions: 80719739 Slow queries: 1419 Opens: 15903523 Flush tables: 1 Open tables: 4948 Queries per second avg: 98.879'
>>> all = re.findall(r"([a-z A-Z]+): ([0-9.0-9]+)",s)
>>> for i , j in all:
>>>         print i , ":" , j
Uptime : 816351
 Threads : 19
 Questions : 80719739
 Slow queries : 1419
 Opens : 15903523
 Flush tables : 1
 Open tables : 4948
 Queries per second avg : 98.879

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

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... (10 Replies)
Discussion started by: msgforsunil
10 Replies

6. 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

7. 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

8. 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

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