Unix/Linux Go Back    


Shell Programming and Scripting BSD, Linux, and UNIX shell scripting — Post awk, bash, csh, ksh, perl, php, python, sed, sh, shell scripts, and other shell scripting languages questions here.

How to Sort files on date field

Shell Programming and Scripting


Tags
perl, perl shift, shift, shift perl

Closed    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 11-06-2008
shivaastrogun shivaastrogun is offline
Registered User
 
Join Date: Nov 2008
Last Activity: 17 November 2008, 3:07 AM EST
Location: san diego
Posts: 7
Thanks: 0
Thanked 0 Times in 0 Posts
Bug How to Sort files on date field

Linux
Hi all,

I have a pecular issue in sorting these files in Solaris environment.

All the below files are modified on November 4th, but I want to sort these files as per date column (eg: 01May07_1623 = ddmmmyy_hhmm)

Nov 4 18:27 SONYELEC00.GI22973.01May07_1623.gpg
Nov 4 18:27 SONYELEC00.GI22973.06Mar08_1504.gpg
Nov 4 18:27 SONYELEC00.GI22973.06Sep07_1900.gpg
Nov 4 18:27 SONYELEC00.GI22973.08Nov07_1900.gpg
Nov 4 18:27 SONYELEC00.GI22973.13Aug07_1900.gpg
Nov 4 18:27 SONYELEC00.GI22973.19Apr07_1733.gpg
Nov 4 18:27 SONYELEC00.GI22973.22Jan08_1900.gpg
Nov 4 18:27 SONYELEC00.GI22973.24Apr07_1757.gpg
Nov 4 18:27 SONYELEC00.GI22973.26Jun08_1900.gpg
Nov 4 18:27 SONYELEC00.GI22974.01May07_1623.gpg
Nov 4 18:27 SONYELEC00.GI22974.13Aug07_1900.gpg
Nov 4 18:27 SONYELEC00.GI22974.19Apr07_1733.gpg
Nov 4 18:27 SONYELEC00.GI22974.24Apr07_1757.gpg

Appreciate your quick support

Thanks,
Shiva
shivadba@xxxxxx

Last edited by DukeNuke2; 11-06-2008 at 12:48 PM.. Reason: deleted mail...
Sponsored Links
    #2  
Old Unix and Linux 11-16-2008
Perderabo's Unix or Linux Image
Perderabo Perderabo is offline Forum Staff  
Unix Daemon (Administrator Emeritus)
 
Join Date: Aug 2001
Last Activity: 26 February 2016, 12:31 PM EST
Location: Ashburn, Virginia
Posts: 9,931
Thanks: 64
Thanked 468 Times in 269 Posts

Code:
$ cat data
SONYELEC00.GI22973.01May07_1623.gpg
SONYELEC00.GI22973.06Mar08_1504.gpg
SONYELEC00.GI22973.06Sep07_1900.gpg
SONYELEC00.GI22973.08Nov07_1900.gpg
SONYELEC00.GI22973.13Aug07_1900.gpg
SONYELEC00.GI22973.19Apr07_1733.gpg
SONYELEC00.GI22973.22Jan08_1900.gpg
SONYELEC00.GI22973.24Apr07_1757.gpg
SONYELEC00.GI22973.26Jun08_1900.gpg
SONYELEC00.GI22974.01May07_1623.gpg
SONYELEC00.GI22974.13Aug07_1900.gpg
SONYELEC00.GI22974.19Apr07_1733.gpg
SONYELEC00.GI22974.24Apr07_1757.gpg
$
$ cat sorta
#! /usr/bin/ksh
Jan=01 Feb=02 Mar=03 Apr=04 May=05 Jun=06
Jul=07 Aug=08 Sep=09 Oct=10 Nov=11 Dec=12

while read name ; do
        base=${name%.gpg}
        hhmm=${base##*_}
        base=${base%_*}
        date=${base##*.}
        day=${date%?????}
        year=${date#?????}
        year=20${year}
        month=${date#??}
        month=${month%??}
        eval month=\$$month
        sort="${year}${month}${day}${hhmm}"
        echo $sort $name
done | sort | while read junk name ; do
        echo $name
done
exit 0
$
$
$ ./sorta < data
SONYELEC00.GI22973.19Apr07_1733.gpg
SONYELEC00.GI22974.19Apr07_1733.gpg
SONYELEC00.GI22973.24Apr07_1757.gpg
SONYELEC00.GI22974.24Apr07_1757.gpg
SONYELEC00.GI22973.01May07_1623.gpg
SONYELEC00.GI22974.01May07_1623.gpg
SONYELEC00.GI22973.13Aug07_1900.gpg
SONYELEC00.GI22974.13Aug07_1900.gpg
SONYELEC00.GI22973.06Sep07_1900.gpg
SONYELEC00.GI22973.08Nov07_1900.gpg
SONYELEC00.GI22973.22Jan08_1900.gpg
SONYELEC00.GI22973.06Mar08_1504.gpg
SONYELEC00.GI22973.26Jun08_1900.gpg
$

Sponsored Links
    #3  
Old Unix and Linux 11-17-2008
shivaastrogun shivaastrogun is offline
Registered User
 
Join Date: Nov 2008
Last Activity: 17 November 2008, 3:07 AM EST
Location: san diego
Posts: 7
Thanks: 0
Thanked 0 Times in 0 Posts
Hi Perderabo,

Thank you so much for your answer

I really appreciate your help

Thanks
Shiva
    #4  
Old Unix and Linux 11-17-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
 
Join Date: Jun 2007
Last Activity: 11 November 2016, 3:44 AM EST
Location: Beijing China
Posts: 1,305
Thanks: 0
Thanked 26 Times in 26 Posts
below perl may help you some


Code:
open FH,"<file";
@arr=<FH>;
close FH;
%hash=('Jan','01','Feb','02','Mar','03','Apr','04','May','05','Jun','06','Jul','07','Aug','08','Sep','09','Oct','10','Nov','11','Dec','12');
foreach(@arr){
	@temp=split("[.]",$_);
	my $str=buildnum($temp[2]);
	$res{$str}=$_;
}
foreach $key (sort keys %res){
	print $res{$key};
}
sub buildnum{
	my $str1=shift;
	$day=substr($str1,0,2);
	$mon=$hash{substr($str1,2,3)};
	$year="20".substr($str1,5,2);
	$time=substr($str1,-4);
	return $year.$mon.$day.$time;
}

Sponsored Links
    #5  
Old Unix and Linux 11-17-2008
radoulov's Unix or Linux Image
radoulov radoulov is offline Forum Advisor  
Forum Adviser
 
Join Date: Jan 2007
Last Activity: 9 January 2017, 4:40 AM EST
Location: Варна, България / Milano, Italia
Posts: 5,690
Thanks: 184
Thanked 629 Times in 586 Posts
Even Solaris sort has the M option:


Code:
sort -t. -k3.6,3.7 -k3.3,3.6M -k3 input

P.S. I believe I've already answered the same question in another thread ...
Sponsored Links
Closed

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Sorting Date Field with Sort -k :/ Glitch100 Shell Programming and Scripting 17 01-05-2012 12:09 PM
Sort field by date mm/dd/yyyy csierra UNIX for Dummies Questions & Answers 6 03-01-2010 09:11 PM
Sort two columns in a field, one of them being a date sweta_doshi Shell Programming and Scripting 5 07-28-2009 06:15 AM
Sort files by date, not showing files from today carlosdivega UNIX for Dummies Questions & Answers 3 07-17-2008 10:37 AM
How to sort a field in a file having date values risshanth Shell Programming and Scripting 4 06-04-2008 05:03 AM



All times are GMT -4. The time now is 08:54 PM.