我有陣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