parsing output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting parsing output
# 1  
Old 08-29-2011
parsing output

Can somebody provide a solution to parse the following;

Code:
cat /tmp/xxx
 
Name:  QUE_REQU (o.mtaseast-o.dmart) (MTPost queue)
    Number of messages:      66446 (Age       686 min; Size        214 mb)
    Backlog (messages):          0 (Age         0 min)
 
Name:  QUE_REQU (o.mtasnord-o.dmart) (MTPost queue)
    Number of messages:      66750 (Age       343 min; Size        153 mb)
    Backlog (messages):         57 (Age         0 min)
 
Name:  QUE_REQU (o.mtaswest-o.dmart) (MTPost queue)
    Number of messages:      48172 (Age       664 min; Size        123 mb)
    Backlog (messages):          0 (Age         0 min)

What I need is to get everything to the rigth of Name:, Number of messages, number of Backlog.

My output should look like this:
Code:
QUE_REQU (o.mtaseast-o.dmart) (MTPost queue) 66446 0
QUE_REQU (o.mtasnord-o.dmart) (MTPost queue) 66750 57
QUE_REQU (o.mtaswest-o.dmart) (MTPost queue) 48172 0

Thanks in advance to all who answer

Last edited by zaxxon; 09-08-2011 at 03:39 AM.. Reason: corrected code tags - OP posted everything in code tags
# 2  
Old 08-29-2011
Code:
sed 's/^ *//' INPUTFILE |
perl -00 -ne '/:\s*(.*)\n.*:\s*(\d+).*:\s*(\d+)/s && print "$1 $2 $3\n"'

This User Gave Thanks to yazu For This Post:
# 3  
Old 08-29-2011
Perfect solution!! Can you just break down the perl part for me as to what its doing
# 4  
Old 08-29-2011
The main part is to say - print one two three Smilie

Ok. The regex reflects the structure of you paragraphs - lines separated by empty lines (sed does some cleaning for it). -00 switch says to perl to read a file by paragraphs. The structure is:

some starting chars (not in the regex)
colon :
spaces \s*
shars (.*) - remember them in $1
before newline \n
chars .*
before colon :
spaces \s*
remember digits in $2 (\d+)
chars, including newline (for that is /s in the end of the regex) .*
before colon :
spaces \s*
digits to $3 (\d+)
some ending shars (not in the regex)
# 5  
Old 09-07-2011
Though the perl solution works perfect for me I just found out that I don't
have perl installed on all my machines. Therefore, can somebody please
supply me with an AWK or sed to solution.

Thanks in advance to all who answer
# 6  
Old 09-08-2011
Try...
Code:
awk '$1=="Name:"{print $2,$3,$4,$5; getline; print $4; getline; print $3}' /tmp/xxx | paste - - -

This User Gave Thanks to Ygor For This Post:
# 7  
Old 09-08-2011
Through Sed..
Code:
sed -n 'H;/^  *$/{x;s/[^:]*: *\(.*\)\n[^:]*: *\([^ ]*\) [^:]*: *\([^ ]*\).*/\1 \2 \3/p}' inputfile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parsing nsupdate's output

Anybody that's ever used nsupdate knows that it's error management is not very good. I have a wrapper script that when it's got all the information it needs launches the nsupdate command. This is my attempt at parsing the output to help support users quickly know if the command succeded or... (7 Replies)
Discussion started by: maverick72
7 Replies

2. Shell Programming and Scripting

Parsing of TOP output

Hi , i am trying to set up an alert, when CPU usage (0.2%us in below output) is more than 40% top | head | grep '^Cpu' Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.1%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%st using CUT, i pulled the value 0.2 and assigned to CPU (variable) CPU=$(expr `top | head -10... (5 Replies)
Discussion started by: Prateek007
5 Replies

3. Shell Programming and Scripting

Parsing Output of a Variable

i have a log file that contains something similar to this: one two three four five six seven eight nine ten eleven twelve thirteen fourteen one two three four five six seven eight nine ten eleven twelve thirteen fourteen one two three four five six seven eight nine ten eleven twelve... (3 Replies)
Discussion started by: SkySmart
3 Replies

4. Shell Programming and Scripting

Parsing the output from top

Guys can you help me fix this parse error. Here's my script. #!/bin/bash # Set up limit below NOTIFY="6.0% us 6.1% us 6.2% us 6.3% us 6.5% us 6.6% us 6.7% us 6.8% us 6.9% us 7.0% us" # CPU Usage every minute TOP="$(top -b -n2 -d 00.20 |grep Cpu|tail -1 | awk -F ":" '{ print $2 }' | cut... (3 Replies)
Discussion started by: redtred
3 Replies

5. Shell Programming and Scripting

Parsing the date output

Hi fellows, I need to define a notification for SSL certificate expiration. My Command output is below: (this is the "Expiration Date") Tue Mar 15 09:30:01 2012 So, at 15th Feb (1 month before the expiration), a notification has to be triggered by a script or sth else. How can i set an... (5 Replies)
Discussion started by: oduth
5 Replies

6. Shell Programming and Scripting

parsing ifconfig output

I'm trying to gather information on the interfaces on a large number of servers. If I run ifconfig I will get: eth0 Link encap:Ethernet HWaddr 00:50:56:A2:27:C1 inet addr:10.145.xxx.xxx Bcast:10.152.45.255 Mask:255.255.254.0 ----- eth1 Link... (2 Replies)
Discussion started by: C0ppert0p
2 Replies

7. Shell Programming and Scripting

parsing output of system()

Hi, From the above output of df command I need to parse only 43G (available space) and display it. root@localhost:> df -h /vol1/joy Filesystem Size Used Avail Capacity Mounted on /vol1/joy 180G 137G 43G 76% ... (3 Replies)
Discussion started by: cjjoy
3 Replies

8. Shell Programming and Scripting

Parsing output

I need to parse the following out put and determine if the USB is a DISK and whether or not it's External. If an HBA line contains "USB" then does the next line contain "DISK" and "External". 0:0,31,0: HBA : (aacraid,1) AAC SCSI 0,0,0: DISK : Adaptec ASR4800SAS Volu0001 ... (6 Replies)
Discussion started by: lochraven
6 Replies

9. Shell Programming and Scripting

parsing output

I have a file that contains the output of the ls -iR command, something like this: ./results: 2504641011 result_1410 2500957642 result_525 2504641012 result_1425 2500957643 result_540 ./tests/1: 2500788755 1 2500788743 1000 ./tests/2: 2500788759 3 2500788758 999 ... (6 Replies)
Discussion started by: looza
6 Replies

10. Shell Programming and Scripting

parsing output from ls command

I have to test the directory name which is obtained from for dir in `ls -l|grep $9 ' i need to check whether it is directory ( if yes, I have to check the first 3 character fo the directory how can I do that? Please help me thanks (3 Replies)
Discussion started by: ajaya
3 Replies
Login or Register to Ask a Question

Featured Tech Videos