awk to format an output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to format an output
# 1  
Old 05-27-2011
MySQL awk to format an output

awk experts,

I have in put file with time stamp followed by "," separated data. same patern continues. The output need time stamp in first columns and data total in 2nd columns.

Input file

Code:
T 9:15
d0,1,3,3
d1,2,1,1
d2,3,1,5
e1,1,1,1
T 9:30
d0,1,1,1
d1,2,3,2
d3,1,2,1
e1,2,1,2

Output:
Code:
Time,Total
T 9:15,11
T 9:30,10

Select the time stamp and use it for each line until next time stamp. Total is the total of "d" lines for next two columns.
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 05-28-2011 at 12:39 AM.. Reason: once again - please use code tags!
# 2  
Old 05-27-2011
If you don't care about the order of the output lines:
Code:
awk -F, '/^T/{x=$0}/^d/{a[x]+=($2+$3)}END{for (i in a){print i","a[i]}}' file

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 05-28-2011
Code:
awk -F, '/^T/{h=$0} /^d/{m+=$2+$3} /^e/&&m{print h FS m;m=0}' infile

# 4  
Old 05-30-2011
Code:
awk -F, '/^T/{h=$0} /^d/{m+=$2+$3} /^e/{print h FS m;m=0}' infile

# 5  
Old 05-30-2011
&&m is so that if there is more than one line that starts with 'e' the line does not get printed more than once.. If that never happens it can be left out.
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 05-31-2011
bartus11, Your code gets me good results but it prints in reverse. Here is my data again:

Code:
Fri May 13 10:29:16 2011
sd5,1.4,0.4,20.9,0.8,0.0,0.0,7.0,0,0
sd12,1.0,0.5,59.3,10.9,0.0,0.0,1.4,0,0
sd16,0.1,0.0,3.6,0.1,0.0,0.0,0.6,0,0
ed17,10.3,2.5,605.6,207.5,0.0,0.0,3.5,0,1
Fri May 13 10:39:16 2011
sd15,1.0,0.3,0.1,18.5,0.0,0.0,5.6,0,0
sd16,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0
sd17,0.0,0.0,0.0,0.1,0.0,0.0,0.8,0,0
Fri May 13 10:49:16 2011
sd11,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0
sd12,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0,0
ed13,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0,0
sd14,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0

Expected output:
Code:
Fri May 13 10:29:16 2011,4.4
Fri May 13 10:39:16 2011,3.3
Fri May 13 10:49:16 2011,5.0

In words: Each line should have time from the line before sd line for first field. 2nd field is total of 2nd and 3rd columns of all sd lines between time line. Select only sd lines.
summary: time,total

Last edited by Franklin52; 06-02-2011 at 10:42 AM.. Reason: Please use code tags when posting data and code samples!
# 7  
Old 05-31-2011
If perl is okay, then you can use the following code.

Code:
 
perl -F, -lane 'if($#F == 0){$time=$_}else{$hash{$time}+=$F[1]+$F[2] if($F[0]!~/ed/)} END{print $_.",".$hash{$_} for sort keys %hash}' d
Fri May 13 10:29:16 2011,3.4
Fri May 13 10:39:16 2011,3.3
Fri May 13 10:49:16 2011,5

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need to maintain in- and output format with awk

Hi All, I have a data file (myfile.txt) as below: - A H C - A HHH F - AAA HH I The importan point is that the width between the columns are not fixed and the column seperator is space. I wish to change the value of 4th column using awk only when $3 = HH. I can... (4 Replies)
Discussion started by: angshuman
4 Replies

2. Shell Programming and Scripting

Format output using awk

Hello all , need help with this ... Input File DEV % POOL 0CB4 FBA 2211300 81792 4 IE RAID-5(3+1) R5_EFD100_1 - - 1805376 82 IF RAID-1 M2_FC300_1 - ... (4 Replies)
Discussion started by: greycells
4 Replies

3. Shell Programming and Scripting

Format output in AWK command

hi Friends , I have a file as below s.txt 1~2~~4 2~6~~7 3~8~~9 t.txt 1~2~~4 2~5~8~7 3~8~~7 header for both files is common (2 Replies)
Discussion started by: i150371485
2 Replies

4. Shell Programming and Scripting

Using AWK to format output and email

Hello, I'm a bit stumped, for some reason when using AWK 'print' is not printing the entire date/line. awk '{print "Ticket #: " $1} {print "Queue : " $2} {print "Recieved : " $3} {print "AP Date : " $4} {print "Circuit ID : " $5} {print... (4 Replies)
Discussion started by: ArvinSodhi
4 Replies

5. UNIX for Dummies Questions & Answers

after awk-> format output

hi i have a awk command with several querys.... awk 'FS="|""; print $4, $5, $6...etc.... $4 gives me the date 20120304 $5 is timestamp 101023 I want to format these in 2012.03.04 or 2012/03/04 10:10:23 but have no idea, if this is possible with format-parameters in the awk... (2 Replies)
Discussion started by: Jazzmatazz
2 Replies

6. Shell Programming and Scripting

awk - format output

Input file1 zone: BAU_SERVER1 C0:50:76:01:C6:20:00:12; 50:06:01:69:3B:20:14:8B; 50:06:01:60:3B:20:14:8B zone: BAU_SERVER2 C0:50:76:01:C6:20:00:08; 50:06:01:69:3B:20:14:8B; 50:06:01:60:3B:20:14:8B zone: ... (4 Replies)
Discussion started by: greycells
4 Replies

7. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies

8. Shell Programming and Scripting

Awk output format help!!! Urgent!!!!

Hello!! I am capturing and counting certain uniq occurance of certain evet from large log files. below is my output I m getting with my script: No of Messages Date Hour 150 Aug15 1 234 Aug15 2 345 Aug15 3 . ... (4 Replies)
Discussion started by: namodi
4 Replies

9. Shell Programming and Scripting

[need help] output format from awk

hi all, i have a problem with my nawk command output below is the description : nawk $12 == "00008001" { cnt++;cs_cd } END {for(cd in cs_cd) print cd, cs_cd } 2007020814.TDR output : 133 123 desire output: 133,123,.... please advices thank you so much (6 Replies)
Discussion started by: bucci
6 Replies

10. Shell Programming and Scripting

Output in a particular format using AWK

Hi All, I am trying to check if if column 5 is greater than 90. If greater it will print the term in column 6, else if all are within limit, then it will output "Size is within limit". I can't seem to do that with the below code. The output should only be 1 statement of "Size is within the... (4 Replies)
Discussion started by: Raynon
4 Replies
Login or Register to Ask a Question