Visit Our UNIX and Linux User Community


sort date issue


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sort date issue
# 8  
Old 09-15-2009
Not tested with more data, but something like:
Code:
sort -t';' -r -k5.12,5.15 -k5.8,5.10M -k5.5,5.7 -k5.17,5



---------- Post updated 09-15-09 at 06:03 PM ---------- Previous update was 09-14-09 at 10:12 PM ----------

To sort properly, time has to be in 24 hour format. Otherwise it won't work because 12:59pm is one minute earlier than 1:00pm (similar problem for midnight).

Did a little more testing, the following:
Code:
sort -t';' -r -k5.12,5.15 -k5.8,5.10rM -k5.5,5.6 -k5.17,5.24

seemed to work as verified by this test:
Code:
gawk '
BEGIN {
  srand()
  for (i = 0; i < 1e4; ++i) {
    x = 1234567890 + int(rand()*1e5)
    printf("%010d;;;;%s\n", x, strftime("%a %d %b %Y %T %p MYT", x))
  }
}' |sort -t';' -r -k5.12,5.15 -k5.8,5.10rM -k5.5,5.6 -k5.17,5.24 |sort -cr

# 9  
Old 09-16-2009
Interesting that "-M" option to sort on months. I learned something today. And of course, the OP - if (s)he is still interested - should prefer the sort command as it is the right tool for the job. However, I was expecting sort to be much faster than my awk snippet. So I ran a comparative test on a sample file of 10000 records (nice file generation snippet, binlib) and the results are:

time sort -t';' -r -k5.12,5.15 -k5.8,5.10rM -k5.5,5.6 -k5.17,5.24 /tmp/time > /dev/null
real 0m1.434s
user 0m1.404s
sys 0m0.028s

time awk -f sortdate.awk /tmp/time > /dev/null
real 0m1.769s
user 0m1.732s
sys 0m0.036s

sort is faster but with a narrower margin that I would have expected.

Previous Thread | Next Thread
Test Your Knowledge in Computers #123
Difficulty: Easy
The Linux kernel code was completely written from scratch.
True or False?

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

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

4. Shell Programming and Scripting

Issue with Sort in Unix

Hi All, I am trying to sort the below data using sort command. temp.dat H|S1-511091486889|27-Jul-2011 00:00:00 H|S1-511091486823|27-Jul-2011 00:00:00 H|S1-511091486757|27-Jul-2011 00:00:00 L|S1-511091486889|1 L|S1-511091486823|1 L|S1-511091486757|1 sort -t "|" -k2 -k1 temp.dat My... (5 Replies)
Discussion started by: deepaknbk
5 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 Issue

these are two records(adr.txt)trying to sort with the the code expl below. 5423|336110|2730 Pierce St|Ste 300|Sioux City|IA|Woodbury|51104|3765||42518651|96405013|A|2|3|U|12/08/2009 5423|14462335|624 JONES ST|STE 5400|Sioux City|IA|Woodbury|51101|||42496648|96400644|A|8|2|U |12/24/2009 nawk... (3 Replies)
Discussion started by: greenworld
3 Replies

7. UNIX for Dummies Questions & Answers

sort issue

Hi Guys , Please help me I am having a requirement as below: $ ls -i log* | head 66486532 log1 66486662 log10 66486663 log11 66486664 log12 66486665 log13 66486533 log2 66486534 log3 66486535 log4 66486584 log5 66486590 log6 This id listing the first 10 files starting with log. ... (4 Replies)
Discussion started by: mraghunandanan
4 Replies

8. 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

9. UNIX for Advanced & Expert Users

date issue-find prevoius date in a patricular format

Hi , I have written a shell script that takes the current date on the server and stores it in a file. echo get /usr/home/data-`date '+%Y%d'`.xml> /usr/local/sandeep/GetFILE.ini I call this GetFILE.ini file from an sftp program to fetch a file from /usr/home/ as location. The file is in... (3 Replies)
Discussion started by: bsandeep_80
3 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

Featured Tech Videos