Sponsored Content
Top Forums Shell Programming and Scripting Idea Required for such findings Post 302294249 by rikxik on Wednesday 4th of March 2009 11:01:28 PM
Old 03-05-2009
Input file:
Code:
$ cat ffile
2009-03-04-0001,144,144,0,0,0,0,0,0,0,50,50
2009-03-04-0002,194,194,0,0,0,0,0,0,0,40,40
2009-03-04-0059,134,134,0,0,0,0,0,0,0,60,60
2009-03-04-0100,144,144,0,0,0,0,0,0,0,55,55
2009-03-04-0159,244,244,0,0,0,0,0,0,0,75,75
2009-03-04-2359,244,244,0,0,0,0,0,0,0,75,75

Quote:
Originally Posted by otheus
First, sort the input according to the hour. Next, split the file into fields delimited by , (comma) and maybe also - (dash). Get the hour number. If the hour is the same as the previous line's hour, add the last field with the sum. If not, print out the current sum, re-initialize the sum to the last field, and remember the new hour.
Code:
sort -t - -k 4.1n,4.2 ffile |
awk -F '[-,]' 'BEGIN { last_hour=-1; } { 
 hour=int($4/100); 
 if (last_hour < 0 || last_hour == hour) sum+=$NF; 
 else { print last_hour,sum; sum=$NF;  } 
 last_hour=hour; 
}'

The above fails with below error:

Code:
awk: syntax error near line 1
awk: bailing out near line 1

However, this works:
Code:
$ awk -F"," '{hr=substr($1,12,2); sum[hr]+=$NF}END{for(i in sum){print "hour", i, sum[i]}}' ffile |sort -n
hour 00 150
hour 01 130
hour 23 75

 

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

An Idea for Tokenizing

One of the monitoring tools in Java is called `jps`, and it monitors all Java processes that are run by the user, an example output would be like this: 3459 Jps 2348 test 2311 Util where the first column represents Process IDs and the second column represents Java processes names.... (8 Replies)
Discussion started by: neked
8 Replies

2. Shell Programming and Scripting

Limitations of awk? Good idea? Bad idea?

Keeping in mind that I'm relatively comfortable with programming in general but very new to unix and korn/bourne shell scripts.. I'm using awk on a CSV file, and then performing calculations and operations on specific fields within specific records. The CSV file I'm working with has about 600... (2 Replies)
Discussion started by: yongho
2 Replies

3. Shell Programming and Scripting

any good idea on this?

txt file like this, 1 2 3 4456 a bb c d 3 f e 1 k 32 d m f e 123 m 2 k every line contains 3 or more columns, all the columns are separated by space, and every column includes 1 to 3 character. what I wanna do is deleting the first three columns, and keep the rest no matter how long... (7 Replies)
Discussion started by: fedora
7 Replies

4. Shell Programming and Scripting

Unix shll script for character count findings?

Hi, iam presenting the input text file format.Of this i need the character count of the number of characters present in each file.The attached file is a combination of 3 text file.each text file starts at record 1 - 34, then the next tetx file starts. What i need is the character count of each... (2 Replies)
Discussion started by: sethunath
2 Replies

5. Shell Programming and Scripting

help... no idea what to use

my issue now is i have a txt file containing a list like below i want to create a script that will add a constant text "Find this name" at the start and "at your directory" at the end. every line should be added by phrase at the start and end. Each line of the file should look like "Find... (4 Replies)
Discussion started by: dakid
4 Replies

6. Shell Programming and Scripting

Getting required fields from a test file in required fromat in unix

My data is something like shown below. date1 date2 aaa bbbb ccccc date3 date4 dddd eeeeeee ffffffffff ggggg hh I want the output like this date1date2 aaa eeeeee I serached in the forum but didn't find the exact matching solution. Please help. (7 Replies)
Discussion started by: rdhanek
7 Replies
AGGREGATE(1)                                                  General Commands Manual                                                 AGGREGATE(1)

NAME
aggregate - optimise a list of route prefixes to help make nice short filters SYNOPSIS
aggregate [-m max-length] [-o max-opt-length] [-p default-length] [-q] [-t] [-v] DESCRIPTION
Takes a list of prefixes in conventional format on stdin, and performs two optimisations to attempt to reduce the length of the prefix list. The first optimisation is to remove any supplied prefixes which are superfluous because they are already included in another supplied pre- fix. For example, 203.97.2.0/24 would be removed if 203.97.0.0/17 was also supplied. The second optimisation identifies adjacent prefixes that can be combined under a single, shorter-length prefix. For example, 203.97.2.0/24 and 203.97.3.0/24 can be combined into the single prefix 203.97.2.0/23. OPTIONS
-m max-length Sets the maximum prefix length for entries read from stdin max_length bits. The default is 32. Prefixes with longer lengths will be discarded prior to processing. -o max-opt-length Sets the maximum prefix length for optimisation to max-opt-length bits. The default is 32. Prefixes with longer lengths will not be subject to optimisation. -p default-length Sets the default prefix length. There is no default; without this option a prefix without a mask length is treated as invalid. Use -p 32 -m 32 -o 32 to aggregate a list of host routes specified as bare addresses, for example. -q Sets quiet mode -- instructs aggregate never to generate warning messages or other output on stderr. -t Silently truncate prefixes that seem to have an inconsistent prefix: e.g. an input prefix 203.97.2.226/24 would be truncated to 203.97.2.0/24. Without this option an input prefix 203.97.2.226/24 would not be accepted, and a warning about the inconsistent mask would be generated. -v Sets verbose mode. This changes the output format to display the source line number that the prefix was obtained from, together with a preceding "-" to indicate a route that can be suppressed, or a "+" to indicate a shorter-prefix aggregate that was added by aggre- gate as an adjacency optimisation. Note that verbose output continues even if -q is selected. DIAGNOSTICS
Aggregate exits 0 on success, and >0 if an error occurs. EXAMPLES
The following list of prefixes: 193.58.204.0/22 193.58.208.0/22 193.193.160.0/22 193.193.168.0/22 193.243.164.0/22 194.126.128.0/22 194.126.132.0/22 194.126.134.0/23 194.151.128.0/19 195.42.240.0/21 195.240.0.0/16 195.241.0.0/16 is optimised as followed by aggregate (output shown using the -v flag): aggregate: maximum prefix length permitted will be 24 [ 0] + 193.58.204.0/21 [ 1] - 193.58.204.0/22 [ 2] - 193.58.208.0/22 [ 3] 193.193.160.0/22 [ 4] 193.193.168.0/22 [ 5] 193.243.164.0/22 [ 0] + 194.126.128.0/21 [ 6] - 194.126.128.0/22 [ 7] - 194.126.132.0/22 [ 8] - 194.126.134.0/23 [ 9] 194.151.128.0/19 [ 10] 195.42.240.0/21 [ 0] + 195.240.0.0/15 [ 11] - 195.240.0.0/16 [ 12] - 195.241.0.0/16 Note that 193.58.204.0/22 and 193.58.208.0/22 were combined under the single prefix 193.58.204.0/21, and 194.126.134.0/23 was suppressed because it was included in 194.126.132.0/22. The number in square brackets at the beginning of each line indicates the original line num- ber, or zero for new prefixes that were introduced by aggregate. The output without the -v flag is as follows: 193.58.204.0/21 193.193.160.0/22 193.193.168.0/22 193.243.164.0/22 194.126.128.0/21 194.151.128.0/19 195.42.240.0/21 195.240.0.0/15 SEE ALSO
aggregate-ios(1) HISTORY
Aggregate was written by Joe Abley <jabley@mfnx.net>, and has been reasonably well tested. It is suitable for reducing customer prefix fil- ters for production use without extensive hand-proving of results. Autoconf bits were donated by Michael Shields <michael.shields@mfn.com>. The -t option was suggested by Robin Johnson <rob- bat2@fermi.orbis-terrarum.net>, and the treatment of leading zeros on octet parsing was changed following comments from Arnold Nipper <arnold@nipper.de>. An early version of aggregate would attempt to combine adjacent prefixes regardless of whether the first prefix lay on an appropriate bit boundary or not (pointed out with great restraint by Robert Noland <rnoland@2hip.net>). BUGS
Common unix parsing of IPv4 addresses understands the representation of individual octets in octal or hexadecimal, following a "0" or "0x" prefix, respectively. That convention has been deliberately disabled here, since resources such as the IRR do not follow the convention, and confusion can result. For extremely sensitive applications, judicious use of the -v option together with a pencil and paper is probably advisable. Joe Abley 2001 November 2 AGGREGATE(1)
All times are GMT -4. The time now is 03:04 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy