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