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