Sponsored Content
Top Forums Shell Programming and Scripting Cut the final line of each sorted value Post 302760413 by Don Cragun on Thursday 24th of January 2013 02:32:57 AM
Old 01-24-2013
Quote:
Originally Posted by anshaa
My inital input file was somethign like below :
INPUT
Code:
SATURDAY|02-JAN-13|2|ADD|165242.56
SATURDAY|02-JAN-13|2|SUB|1602446.2
SATURDAY|02-JAN-13|2|MULT|109762.97
SATURDAY|04-JAN-13|4|ADD|299754.28
SATURDAY|04-JAN-13|4|SUB|3196764.19
SATURDAY|04-JAN-13|4|MULT|224014.41
SATURDAY|07-JAN-13|7|ADD|68130.48
SATURDAY|07-JAN-13|7|SUB|634547.65
SATURDAY|07-JAN-13|7|MULT|42885.53
SATURDAY|08-JAN-13|8|ADD|236907.27
SATURDAY|08-JAN-13|8|SUB|2495910.06
SATURDAY|08-JAN-13|8|MULT|173774.33
SATURDAY|08-JAN-13|8|ADD|236925.26
SATURDAY|08-JAN-13|8|SUB|2496364.66
SATURDAY|08-JAN-13|8|MULT|173805.1
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|SUB|635450.66
SATURDAY|07-JAN-13|7|MULT|42927.81
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|SUB|635686.14

after using "sort" of this file i got the below file.
Code:
SATURDAY|02-JAN-13|2|ADD|165242.56
SATURDAY|02-JAN-13|2|SUB|1602446.2
SATURDAY|02-JAN-13|2|MULT|109762.97
SATURDAY|04-JAN-13|4|ADD|299754.28
SATURDAY|04-JAN-13|4|SUB|3196764.19
SATURDAY|04-JAN-13|4|MULT|224014.41
SATURDAY|07-JAN-13|7|ADD|68130.48
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|SUB|634547.65
SATURDAY|07-JAN-13|7|SUB|635450.66
SATURDAY|07-JAN-13|7|SUB|635686.14
SATURDAY|07-JAN-13|7|MULT|42885.53
SATURDAY|07-JAN-13|7|MULT|42927.81
SATURDAY|08-JAN-13|8|ADD|236907.27
SATURDAY|08-JAN-13|8|ADD|236925.26
SATURDAY|08-JAN-13|8|SUB|2495910.06
SATURDAY|08-JAN-13|8|SUB|2496364.66
SATURDAY|08-JAN-13|8|MULT|173774.33
SATURDAY|08-JAN-13|8|MULT|173805.1

But after this i need something like the below format.
Code:
SATURDAY|02-JAN-13|2|ADD|165242.56
SATURDAY|02-JAN-13|2|SUB|1602446.2
SATURDAY|02-JAN-13|2|MULT|109762.97
SATURDAY|04-JAN-13|4|ADD|299754.28
SATURDAY|04-JAN-13|4|SUB|3196764.19
SATURDAY|04-JAN-13|4|MULT|224014.41
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|SUB|635686.14
SATURDAY|07-JAN-13|7|MULT|42927.81
SATURDAY|08-JAN-13|8|ADD|236925.26
SATURDAY|08-JAN-13|8|SUB|2496364.66
SATURDAY|08-JAN-13|8|MULT|173805.1

I need the last row from each sorted value(combination of first 4 columns)
Again, your input data and the sorted input data do not match. If you had sorted the input on the first four columns (assuming | is the field separator), SUB would follow MULT in your sorted when the first three fields match.

The following does what you requested, but (as described above) it doesn't match the output you said you needed:
Code:
sort INPUT | awk '
match($0, /.*[|]/) == 1 {
        k = substr($0, 1, RLENGTH)
        if(lk != k) {
                if(ll) print ll
                lk = k
        }
        ll = $0
}
END {   print ll}'

which produces the output:
Code:
SATURDAY|02-JAN-13|2|ADD|165242.56
SATURDAY|02-JAN-13|2|MULT|109762.97
SATURDAY|02-JAN-13|2|SUB|1602446.2
SATURDAY|04-JAN-13|4|ADD|299754.28
SATURDAY|04-JAN-13|4|MULT|224014.41
SATURDAY|04-JAN-13|4|SUB|3196764.19
SATURDAY|07-JAN-13|7|ADD|68362.5
SATURDAY|07-JAN-13|7|MULT|42927.81
SATURDAY|07-JAN-13|7|SUB|635686.14
SATURDAY|08-JAN-13|8|ADD|236925.26
SATURDAY|08-JAN-13|8|MULT|173805.1
SATURDAY|08-JAN-13|8|SUB|2496364.66

This User Gave Thanks to Don Cragun For This Post:
 
All times are GMT -4. The time now is 07:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy