0

我正在为一些自动化编写一个 bash 脚本,但我似乎找不到对包含日期的数组进行排序的最佳方法。

一个示例数组:

dates=('180212', '110112', '040312')

输出应如下所示:

110112
180212
040312

我尝试过使用sort,但它只是将其排序为整数。

任何人都可以建议使用的最佳方法吗?它也不一定要排序,我只需要数组中最旧的日期。

谢谢!

4

2 回答 2

1

您可以交换年份和日期数字,并用于sort对结果值进行排序。然后取最旧的值并撤消交换。您可以sed像这样使用来进行交换:

echo 112233 | sed 's/\(..\)\(..\)\(..\)/\3\2\1/'

这将前两位与后两位数字交换。

于 2013-01-30T12:08:44.570 回答
1

示例 bash 脚本:

dates="180212 110112 040312"
min="999999"
for d in $dates
do
    rdate="${d:4}${d:2:2}${d:0:2}"
    if [ "$min" -gt "$rdate" ]
    then
        min=$rdate
    fi
done

min="${min:4}${min:2:2}${min:0:2}"
echo $min

仅适用于 ddmmyy 日期。这个想法是以 yymmdd 格式反转日期,然后找到最小值。在 bash 中完成这项工作。虽然不漂亮。

于 2013-01-30T12:15:32.947 回答