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.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
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
2. UNIX for Advanced & Expert Users
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
3. Shell Programming and Scripting
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
4. UNIX for Dummies Questions & Answers
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
5. Shell Programming and Scripting
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
6. UNIX for Dummies Questions & Answers
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
7. Shell Programming and Scripting
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
8. Shell Programming and Scripting
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
9. Shell Programming and Scripting
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
10. Shell Programming and Scripting
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
JOIN(1) General Commands Manual JOIN(1)
NAME
join - relational database operator
SYNOPSIS
join [ options ] file1 file2
DESCRIPTION
Join forms, on the standard output, a join of the two relations specified by the lines of file1 and file2. If one of the file names is the
standard input is used.
File1 and file2 must be sorted in increasing ASCII collating sequence on the fields on which they are to be joined, normally the first in
each line.
There is one line in the output for each pair of lines in file1 and file2 that have identical join fields. The output line normally con-
sists of the common field, then the rest of the line from file1, then the rest of the line from file2.
Input fields are normally separated spaces or tabs; output fields by space. In this case, multiple separators count as one, and leading
separators are discarded.
The following options are recognized, with POSIX syntax.
-a n In addition to the normal output, produce a line for each unpairable line in file n, where n is 1 or 2.
-v n Like -a, omitting output for paired lines.
-e s Replace empty output fields by string s.
-1 m
-2 m Join on the mth field of file1 or file2.
-jn m Archaic equivalent for -n m.
-ofields
Each output line comprises the designated fields. The comma-separated field designators are either 0, meaning the join field, or
have the form n.m, where n is a file number and m is a field number. Archaic usage allows separate arguments for field designators.
-tc Use character c as the only separator (tab character) on input and output. Every appearance of c in a line is significant.
EXAMPLES
sort /adm/users | join -t: -a 1 -e "" - bdays
Add birthdays to password information, leaving unknown birthdays empty. The layout of is given in users(6); bdays contains sorted
lines like
tr : ' ' </adm/users | sort -k 3 3 >temp
join -1 3 -2 3 -o 1.1,2.1 temp temp | awk '$1 < $2'
Print all pairs of users with identical userids.
SOURCE
/sys/src/cmd/join.c
SEE ALSO
sort(1), comm(1), awk(1)
BUGS
With default field separation, the collating sequence is that of sort -b -ky,y; with -t, the sequence is that of sort -tx -ky,y.
One of the files must be randomly accessible.
JOIN(1)