sorting question......


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sorting question......
# 1  
Old 08-17-2009
sorting question......

HI,

I have been racking my brain for a while on this..... was hoping one of the guru's could point me in the right direction....

Basically I have the following data in a file :

----
2009-01-01 10665 Begin 02:25:23
2009-01-02 10665 Begin 20:54:11
2009-01-03 10665 Begin 05:31:17
2009-01-03 10666 Begin 06:01:38
2009-01-03 10667 Begin 06:33:18
2009-01-03 10668 Begin 07:00:42
2009-01-03 10669 Begin 07:28:14
2009-01-03 10670 Begin 07:56:09
2009-01-06 10671 Begin 00:25:31
2009-01-06 10671 Begin 02:17:50
2009-01-06 10671 Begin 03:55:32
----

I want to end up with :

------
2009-01-02 10665 Begin 20:54:11
2009-01-03 10666 Begin 06:01:38
2009-01-03 10667 Begin 06:33:18
2009-01-03 10668 Begin 07:00:42
2009-01-03 10669 Begin 07:28:14
2009-01-03 10670 Begin 07:56:09
2009-01-06 10671 Begin 03:55:32
-------

I have tried using sort (-u -kn) and in reverse. but either way I do it I always end up getting the first instance of sort on column 2.

e.g. I get
2009-01-06 10671 Begin 00:25:31
instead of :
2009-01-06 10671 Begin 03:55:32

I used : sort -k 1.12,1.16 -u n.out so far ~(nearest try)

I hope someone could help

Many thanks in advance
Raj
# 2  
Old 08-17-2009
Not sure I understand what you're aiming for here.

It looks like the for each possible value of the second field you are wanting to return only one line, but what criteria are you using to decide on your return. e.g.:

First three lines:
Code:
2009-01-01 10665 Begin 02:25:23
2009-01-02 10665 Begin 20:54:11
2009-01-03 10665 Begin 05:31:17

Last three lines:

2009-01-06 10671 Begin 00:25:31
2009-01-06 10671 Begin 02:17:50
2009-01-06 10671 Begin 03:55:32

lines highlighted in bold appear to be the ones you're after, but I do not see quite how you decided on these...

Is it simply the line with the greatest timestamp in the third field that you want returned for each value in the second field, regardless of the date in the first field?

In which case - can be leaned up somewhat, but:

Code:
#  sort -n +3 infile | awk '{t[$2]=$0}END{for (i in t){print t[i]}}' | sort -n +1
2009-01-02 10665 Begin 20:54:11
2009-01-03 10666 Begin 06:01:38
2009-01-03 10667 Begin 06:33:18
2009-01-03 10668 Begin 07:00:42
2009-01-03 10669 Begin 07:28:14
2009-01-03 10670 Begin 07:56:09
2009-01-06 10671 Begin 03:55:32

# 3  
Old 08-17-2009
Quote:
Originally Posted by mashy
I have tried using sort (-u -kn) and in reverse. but either way I do it I always end up getting the first instance of sort on column 2.
If you wont to take the last instance instead of first one in column 2, you can do it like that:

Code:
 
sort -r file | uniq -s11 -w5 | sort

But than the output looks like this:
Code:
 
2009-01-03 10665 Begin 05:31:17
2009-01-03 10666 Begin 06:01:38
2009-01-03 10667 Begin 06:33:18
2009-01-03 10668 Begin 07:00:42
2009-01-03 10669 Begin 07:28:14
2009-01-03 10670 Begin 07:56:09
2009-01-06 10671 Begin 03:55:32

It differs in the first line with what you specified.
# 4  
Old 08-17-2009
With awk...
Code:
 
awk  '$2 in max {if($4 > max[$2]){max[$2]=$4;s[$2]=$1};next}
 {max[$2]=$4;s[$2]=$1}
 END{for(i in max)print s[i] FS i FS "Begin" FS max[i]}
 ' inputfile

# 5  
Old 08-17-2009
Bug Thanks it worked a treat

Hi,

Thanks you very much for all your responses to my madness.

I need to the sort on column 2 but only pull out the value with was the greatest timestamp. sorry should have made that clear... bad example data I put here. thanks Tytalus, as your code worked a treat.

Am a happy bunny now. thank to the rest of you guys too, will try some of the other ways also.

Cheers Raj
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Question about sorting -- how to pass an array to a function

Hi, guys I just wanted to sort the elements of an array ascendingly. I know the following code does work well: array=(13 435 8 23 100) for i in {0..4} do j=$((i+1)) while ] do if } -le ${array} ]] then : else min=${array} ${array}=${array} ${array}=$min fi... (5 Replies)
Discussion started by: franksunnn
5 Replies

2. UNIX for Dummies Questions & Answers

Quick Question: Sorting

Hi fellow linuxers I have a quick question... I would like to sort the numbers in each line that are within a file, and I want to sort them so that the numbers in each line go from SMALLEST to HIGHEST. For example, my file looks like this: 6 4 2 3 1 5 7 8 15 16 11 13 12 14 20 18 19 17 24 26... (7 Replies)
Discussion started by: lucshi09
7 Replies

3. Shell Programming and Scripting

sorting

Hi all, Does anyone can help me the following question? I would like to write an AWK script. In the following input file, each number in "start" is paired with numbers in column "end". No Start End A 22,222,33,22,1233,3232,44 555,333,222,55,1235,3235,66... (7 Replies)
Discussion started by: phoeberunner
7 Replies

4. Shell Programming and Scripting

Sorting HELP

Hi, I have posted related topic but as i continue the research I find more need to sort the data. AS(2607:f278:4101:11:dead:beef:f00f:f), AS786 AS6453 AS7575 AS7922 AS(2607:f2e0:f:1db::16), AS786 AS3257 AS36252 AS786 AS3257 AS36252 AS(2607:f2f8:1700::2), AS786 AS6939 AS25795 ... (6 Replies)
Discussion started by: sam127
6 Replies

5. UNIX for Advanced & Expert Users

HELP on sorting

hi everyone, I am kind of new to this forum. I need help in sorting this data out accordingly, I am actually doing a traceroute application and wants my AS path displayed in front of my address like this; 192.168.1.1 AS28513 AS65534 AS5089 AS5089 .... till the last AS number and if possible... (1 Reply)
Discussion started by: sam127
1 Replies

6. UNIX for Dummies Questions & Answers

Sorting help

i have list of files: Wang De Wong CVPR 09.pdf Yaacob AFGR 99 Second edition.pdf Shimon CVPR 01.pdf Den CCC 97 long one.pdf Ronald De Bour CSPP 04.pdf ..... how can i sort this directory so the output will be in the next format: <year>\t<conference/journal>\t<author list> - t is tab (its... (1 Reply)
Discussion started by: nirnir26
1 Replies

7. UNIX for Dummies Questions & Answers

Sorting question

i have list of files: Wang CVPR 09.pdf Yaacob AFGR 99.pdf Shi CVPR 04.pdf ..... how can i sort with single line this directory so the output will be in the next format: <year>\t<conference/journal>\t<author list> - t is tab (its sort by the year) example: 1999 CVIU ... (2 Replies)
Discussion started by: nirnir26
2 Replies

8. Shell Programming and Scripting

Sorting Question

Hi All I have a CSV file where 3rd and 4th fields are date and time it's a session log file printing the date and time per session Now, I want to create a statistics of how many sessions per date and Time I managed a script for sessions per hour Code: #!/bin/bash #This Shell Script... (3 Replies)
Discussion started by: The Owl
3 Replies

9. UNIX for Dummies Questions & Answers

sorting question

How can I sort lines in a file in a consistent, user-defined way that is not alphabetical, numeric, or patterned in any other way (e.g., sort a bunch of 5 line files to always print lines 2,5,3,4,1)? Thanks in advance. (4 Replies)
Discussion started by: darwin_886
4 Replies

10. UNIX for Dummies Questions & Answers

Noob sorting question

Ok here is the deal, I have a command given to me by some systems guy who I cannot get ahold of on the weekend without paying him alot of money to help me. I need to get this done before Monday as I am just getting pummeled by DOS attacks. The comand given was.... netstat -ntu | awk '{print... (1 Reply)
Discussion started by: Hexabah
1 Replies
Login or Register to Ask a Question