Awk help needed..


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Awk help needed..
# 1  
Old 08-23-2008
Awk help needed..

I have to add number in column 1 by month.

1531 Feb 1 2007 pgaps_p007_27909.trc
1529 Feb 1 2007 pgaps_p006_27907.trc
1533 Feb 1 2007 pgaps_p005_27905.trc
635 Apr 7 2007 pgaps_smon_2347.trc
634 Apr 7 2007 pgaps_lgwr_2343.trc
634 Apr 8 2007 pgaps_lgwr_2311.trc
613 Apr 10 2007 pgaps_p004_402.trc
615 Apr 10 2007 pgaps_p002_7500.trc
698 May 2 2007 pgaps_smon_2339.trc
634 May 5 2007 pgaps_lgwr_2335.trc
656 Mar 1 2007 pgaps_smon_8006.trc
634 Mar 3 2007 pgaps_lgwr_8002.trc
634 Mar 4 2007 pgaps_lgwr_2383.trc
641 Mar 8 2007 pgaps_qmn0_20351.trc

Output should be :
Feb 4593
Apr 3131
May 3897

When I run below awk command I am not getting desired output.

ls -ltr |awk 'BEGIN { OFS = "\t"; ORS = "\n\n" } { print $1, $2, $3, $4 }'| awk '{tot=tot+$1}END{print tot}'

Any help would be greatly appreciated.
# 2  
Old 08-23-2008
I don't get that kind of output with ls -l but assuming you do, the following ought to work.

Code:
ls -l | awk '{ tot[$2] += $1 } END { for (t in tot) printf "%s\t%i\n", t, tot[t] }'

Requesting ls to sort the output is unnecessary, if you require chronological output order, some additional tricks will be needed. The array loop in awk for (x in y) traverses the keys of y in unpredictable order.

Also the sample output you posted doesn't seem to agree with the input. I get the following

Code:
Feb     4593
May     1332
Apr     3131
Mar     2565

Did I misunderstand your requirement, or is the sample output wrong? Looks like you accidentally summed Mar and May into the same category.
# 3  
Old 08-23-2008
Era,
Thanks for the update. Your observation is absolutely correct. I removed first few colums of ls -ltr output as they are not needed in my script. When I run command provided by you I do not get intended output.

ls -l | awk '{ tot[$2] += $1 } END { for (t in tot) printf "%s\t%i\n", t, tot[t] }'

354272 %ii
1 %ii

Thanks,
Prakash
# 4  
Old 08-23-2008
The real column numbers are $5 and $6 then, if your ls gives the same output format as mine.
# 5  
Old 08-24-2008
Era,
Thanks for your help. I am able to get output as desired.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - help needed please

Hi.. have a file as below, appreciate if someone can help on this 143|500| 10| 23353 22131 23355 23354 23358 23352 23357 23350 23349 23351| RAID5 213|1008| 9| 22419 22412 221 22413 22414 22416 22417 22415 22418| RAID6 1088|500| 5| 22243 22240 22244 22242 22241| RAID5 322|1200| 12|... (6 Replies)
Discussion started by: richard0@rediff
6 Replies

2. Shell Programming and Scripting

awk help needed

Hi Everyone, i have following in my file 1 2 3 4 5 6 . . 100 and now i want the output as 1 4 7 ..........so on..............97 100 (10 Replies)
Discussion started by: zozoo
10 Replies

3. Shell Programming and Scripting

awk help needed

Hi Experts, I have a file (file 1) with several columns and I need to create 2 files based on the data of 20th column of file 1. Criteria 1 : If the 20th field of file1 is empty , copy the entire records to file 2. I am successfully able to do this with the following awk code : awk... (2 Replies)
Discussion started by: nua7
2 Replies

4. Shell Programming and Scripting

awk help needed

Hi, i have input records as shown below. 4097,Probe3,G10,255,05/17/2011 12:44:03:185,NULL,05/17/2011 12:39:03:180,05/17/2011... (1 Reply)
Discussion started by: raghavendra.nsn
1 Replies

5. UNIX for Dummies Questions & Answers

help needed for awk

Dear all, I am new to use unix. I run the following command and got the error. Anyone knows how should I modify the command. Thanks a lot! $ for chr in 'seq 1 23'; do awk 'BEGIN {print "T","pheno";}{print "M",$2}' out_${chr}.map > dat_${chr}.dat; done error message:... (2 Replies)
Discussion started by: forevertl
2 Replies

6. Shell Programming and Scripting

Awk Help needed

hi, I have input file woth records as shown below OCSMRC_OK,7057348733,+0.00,0,18/05/2010 23:42:19,BellMobility,302610000918553,0006056099,B30,686505,686505,OCS_MRC,+49.14,0,0 ,0,0, OCSPPKB_NOK,4163460120,+1.25,0,18/05/2010... (4 Replies)
Discussion started by: raghavendra.cse
4 Replies

7. UNIX for Dummies Questions & Answers

Awk help needed

I have a log file monitor script that checks through a log file for a string. I use awk to search the log file, starting at the last checked line, for the specified string and then output the count and the last row number checked. The part of the script that does all the work is here: set --... (6 Replies)
Discussion started by: mglenney
6 Replies

8. Shell Programming and Scripting

help needed in awk

Hi , i have a file a.txt like this: far near veryfar toonear typeset var1=veryfar to extract the text between two strings i use the following command : awk '/far/,$veryfar/' a.txt its not working can nyone tell pls whats wrong in it ? i doubt can we use variable in awk like this... (3 Replies)
Discussion started by: santosh1234
3 Replies

9. Shell Programming and Scripting

awk help needed

How do I alter this command so that it prints only the second comma delimited field from line number 3? Secondly, how do you redirect the output to a variable called TEST? Thanks (cat BATCH007.TXT | awk 'BEGIN { FS = "," } ; {print $2 }') (5 Replies)
Discussion started by: ddurden7
5 Replies

10. Shell Programming and Scripting

awk help needed

I am trying to write a script that will parse out the e-mail address of a person from the name of a file in a directory. Example: filename is: /home/myname/first.middle.last@email.com.xls I want to extract just the email address and mail the file to that address. I want to send the... (6 Replies)
Discussion started by: Drenhead
6 Replies
Login or Register to Ask a Question