Sort comand for Date


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sort comand for Date
# 1  
Old 12-03-2009
Sort comand for Date

Hi All,

I have two questions for sorting based on date.

Sample input:

Code:
2009/07/23 11:48:44|alpha
2009/07/23 11:48:44|gamme
2009/07/23 11:48:44|beta
2009/07/23 11:48:44|test
2009/07/23 11:48:44|data
2009/07/23 11:48:44|hello
2009/07/23 11:48:44|cat

Output:

Code:
2009/07/23 11:48:44|alpha
2009/07/23 11:48:44|beta
2009/07/23 11:48:44|cat
2009/07/23 11:48:44|data
2009/07/23 11:48:44|gamme
2009/07/23 11:48:44|hello
2009/07/23 11:48:44|test

Question1:

Since the date is in this format yyyy/mm/dd hh24:mm:ss, the simple sort command would sort it correctly. I tested it with many scenarios and as far as sort is concerned its correct. Please correct me if I have made a mistake in this.

Question2:

From the sample data, if the date is the same, the sorting takes the second field and sorts alphabetically.

I tried to avoid this by using
Code:
sort -t'|' +0 -1 test

and

Code:
sort -t'|' -k1,1 test

But the output is same as the command

Code:
sort -t'|' -k1 test

How to restrict this kind of sorting? I want to keep the order as it is in the file if the datestamp is the same

regards...
# 2  
Old 12-03-2009
Someone might know a way to accomplish this with sed or awk. Here's what I found with the sort command. Kinda strange behavior though.

Code:
data:
cat f1.dat
2009/07/23 11:48:44|alpha
2009/07/23 11:48:44|gamme
2009/12/23 11:48:44|beta
2009/11/23 11:48:44|test
2009/05/23 11:48:44|test
2009/07/23 11:48:44|data
1999/07/23 11:48:41|bbbb
1999/07/23 11:48:41|aaaa
2009/07/23 11:48:44|hello
2009/07/23 11:48:44|cat
2009/07/23 11:48:41|zulu
2008/07/23 11:48:41|zulu
2008/07/23 11:48:41|cccc

You'd think this would work but it doesn't

sort cmd:  sort -n -s -t '|' -k 1 f1.dat

output:
1999/07/23 11:48:41|bbbb
1999/07/23 11:48:41|aaaa
2008/07/23 11:48:41|zulu
2008/07/23 11:48:41|cccc
2009/07/23 11:48:44|alpha
2009/07/23 11:48:44|gamme
2009/12/23 11:48:44|beta
2009/11/23 11:48:44|test
2009/05/23 11:48:44|test
2009/07/23 11:48:44|data
2009/07/23 11:48:44|hello
2009/07/23 11:48:44|cat
2009/07/23 11:48:41|zulu

Ugly but it works
sort cmd:  sort -n      \
                -s      \
                -t      \
                -k 1.1  \
                -k 1.2  \
                -k 1.3  \
                -k 1.4  \
                -k 1.5  \
                -k 1.6  \
                -k 1.7  \
                -k 1.9  \
                -k 1.10 \
                -k 1.11 \
                -k 1.12 \
                -k 1.13 \
                -k 1.14 \
                -k 1.15 \
                -k 1.16 \
                -k 1.17 \
                -k 1.18 \
                -k 1.19 \
              f1.dat

output:
1999/07/23 11:48:41|bbbb
1999/07/23 11:48:41|aaaa
2008/07/23 11:48:41|zulu
2008/07/23 11:48:41|cccc
2009/05/23 11:48:44|test
2009/07/23 11:48:41|zulu
2009/07/23 11:48:44|alpha
2009/07/23 11:48:44|gamme
2009/07/23 11:48:44|data
2009/07/23 11:48:44|hello
2009/07/23 11:48:44|cat
2009/11/23 11:48:44|test
2009/12/23 11:48:44|beta

If we remove the \'s and :'s from the file:

data:
cat f2.dat
20090723114844|alpha
20090723114844|gamme
20091223114844|beta
20091123114844|test
20090523114844|test
20090723114844|data
19990723114841|bbbb
19990723114841|aaaa
20090723114844|hello
20090723114844|cat
20090723114841|zulu
20080723114841|zulu
20080723114841|cccc

this works:
sort cmd:  sort -n -s -t '|' -k 1 f2.dat

output:
19990723114841|bbbb
19990723114841|aaaa
20080723114841|zulu
20080723114841|cccc
20090523114844|test
20090723114841|zulu
20090723114844|alpha
20090723114844|gamme
20090723114844|data
20090723114844|hello
20090723114844|cat
20091123114844|test
20091223114844|beta

# 3  
Old 12-03-2009
quintet almost had it with
Code:
sort -t'|' -k1,1 test

if "-s" option can be added.

Problem with jsmithstl's sort attempts were the -n option and the lack of ending field "-k1" instead of "-k1,1". With the format of f2.dat, the none-digit character '|' stopped the numeric comparison so it worked.
# 4  
Old 12-03-2009
Nicely done. I even read the "end it at POS2" in the man page and glossed right over it.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sort by name and date

nawk '$1=="Date" {d=$(NF-2);next} $1=="Queue" {q=$NF;next} $1=="Forms"{print q, $NF, d}' OFS='|' printfile.log I have this script working. Please let me know how to sort by Queue and then Date. (4 Replies)
Discussion started by: Daniel Gate
4 Replies

2. Shell Programming and Scripting

Sort help: How to sort collected 'file list' by date stamp :

Hi Experts, I have a filelist collected from another server , now want to sort the output using date/time stamp filed. - Filed 6, 7,8 are showing the date/time/stamp. Here is the input: #---------------------------------------------------------------------- -rw------- 1 root ... (3 Replies)
Discussion started by: rveri
3 Replies

3. Shell Programming and Scripting

How to Sort by Date and Time?

Hi, The input file is as follows, 22.06.2012 17:58:38 CPUser: xxxxxxx, billedAfterStatus: Active 13.07.2012 08:46:15 CPUser: xxxxxxx, billedAfterStatus: Active 20.07.2012 08:56:24 CPUser: xxxxxxx, billedAfterStatus: Active 20.03.2012 08:56:24 CPUser: xxxxxxx, billedAfterStatus: Active... (16 Replies)
Discussion started by: nanthagopal
16 Replies

4. Shell Programming and Scripting

sort the date

Hi All, Please help me to sort the date field which is in the format 2012-02-03 16:09:37.388... Platform: Red Hat linux Thanks in advance (2 Replies)
Discussion started by: jesu
2 Replies

5. UNIX for Dummies Questions & Answers

how to combine du -h and sort by date

The problem: I have a task to give a my boss: 1. the files and directory sizes in human readable form: du -h 2. He also wants me to give him the date stamp on the files and directories. something like ls -R or sort by date Does anyone have a script that can do this efficiently (I am... (2 Replies)
Discussion started by: obology
2 Replies

6. Shell Programming and Scripting

sort date issue

Hi Everyone, # cat b Sat 12 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 11:32:49 AM MYT; Sat 13 Sep 2009 10:31:49 PM MYT;a;a;a;Mon 14 Sep 2009 10:31:49 PM MYT; Sat 14 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 10:31:49 PM MYT; # sort -t';' -k5 b Sat 13 Sep 2009 10:31:49 PM... (8 Replies)
Discussion started by: jimmy_y
8 Replies

7. Shell Programming and Scripting

how to sort by the date

Hello World~ Please Help Me(BASH) input: dde,2007.8.25,891 dde,2007.8.23,356 dfe,2007.10.12,341 cba,2005.12.5,342 I wanna know how to sort by the date(2005.12.5) output: cba,2005.12.5,342 dde,2007.8.23,356 dde,2007.8.25,891 dfe,2007.10.12,341 Thanks in advance (3 Replies)
Discussion started by: lifegeek
3 Replies

8. Linux

sort files by date

Hi All, Sorry to throw this frequent question but I lost my notes on it. How do you list the files by date? I'm on red hat. Thanks in advance, itik (1 Reply)
Discussion started by: itik
1 Replies

9. Shell Programming and Scripting

Sort By Date and Time

Hi , I would like to list or sort by date and time (the files are named in day and time format) where the latest file will be placed at the bottom and the earliest file be placed at the top. Can anybody help me? My files are named in the following manner. EG: abc_071128_144121_data "... (21 Replies)
Discussion started by: Raynon
21 Replies

10. Shell Programming and Scripting

Sort by Date

I'm looking to edit a file which contains various data including date.(ddmmyyyy) I want to sort by date and then count the number of different dates found Any ideas how to acheive this Thanks in advance. (2 Replies)
Discussion started by: Mudshark
2 Replies
Login or Register to Ask a Question