我正在为一些自动化编写一个 bash 脚本,但我似乎找不到对包含日期的数组进行排序的最佳方法。
一个示例数组:
dates=('180212', '110112', '040312')
输出应如下所示:
110112
180212
040312
我尝试过使用sort
,但它只是将其排序为整数。
任何人都可以建议使用的最佳方法吗?它也不一定要排序,我只需要数组中最旧的日期。
谢谢!
您可以交换年份和日期数字,并用于sort
对结果值进行排序。然后取最旧的值并撤消交换。您可以sed
像这样使用来进行交换:
echo 112233 | sed 's/\(..\)\(..\)\(..\)/\3\2\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 中完成这项工作。虽然不漂亮。