我有阵INPUTFILES n个文件排序阵列
INPUTFILES=(file_0 ... files_n-1)
,我需要他们在排列顺序由第一行中的文件进行排序。
文件看起来像这样:
2012.09.20 17:10
2012.11.21 00:10
2012.12.22 15:10
2012.12.23 15:10
我已经函数比较两个文件:
IsSooner() {
ONEFIRST=$(head -1 "${1}")
ONELAST=$(tail -1 "${1}")
TWOFIRST=$(head -1 "${2}")
TWOLAST=$(tail -1 "${2}")
TIMEFORMAT='Y.%m.%d %H:%M:'
perl <<EOF
use strict;
use warnings;
use Time::Piece;
open STDERR, "> /dev/null";
my @dates1 = ("${ONEFIRST}","${ONELAST}");
my @range1 = map Time::Piece->strptime("\$_", "${TIMEFORMAT}"), @dates1;
my @dates2 = ("${TWOFIRST}","${TWOLAST}");
my @range2 = map Time::Piece->strptime("\$_", "${TIMEFORMAT}"), @dates2;
if (\$range1[0] < \$range2[0]) {
exit 0;
}
exit 1;
EOF
[ $? -eq 0 ] && {
return 0
}
return 1
}
早些时候将文件中的第一次约会,数组中的较小的指数都会有。
BASH中的解决方案,如果可取的话。
UPDATE 我不知道日期的格式。我只知道它将采用strftime(3c)格式。
如果我明白,你想用shell替换perl吗? – tuxuday
没有。 perl片段是必需的。我只需要重新排列INPUTFILES数组中的顺序。我只是添加比较函数,因为要设置集合的顺序,您必须具有可比项目。 – Rob
你需要一个排序算法? – tuxuday