如何使用BASH中的日期数组标记月份

时间:2017-03-08 07:55:44

标签: bash date

我遇到了一个似乎有太多相互矛盾的变量让它变得不可行的问题。所以我想提出任何建议,或者建议实施是否真的不可行。

现在我有一个接受值的脚本,例如xx-xx-160416-xx .... 此脚本筛选出日期并按升序对日期进行排序。

因此,对于每个日期,它将涵盖总共3个月。 对于例如010416意味着我将在2016年1月,2月和3月进行标记。

我不希望有重复项,这意味着如果我有以下3个值

010416
010516
010716

我将只保留010416和010716,因为不再需要010516。

我知道这看起来有点太多了,但我很感激我能从这里得到任何帮助。甚至指出我正确的方向。

目前我的脚本看起来像这样

awk '{print $1}' /home/1551391/restore > restore1
awk -F '-' '{print $3}' /home/1551391/restore1 > restore
uniq /home/1551391/restore > restore1
declare -a array
for file in `cat /home/1551391/restore1`
do
  [[ $file =~ '([[:digit:]]{2})([[:digit:]]{2})([[:digit:]]{2})' ]] && \
    {
      index="${BASH_REMATCH[3]}${BASH_REMATCH[2]}${BASH_REMATCH[1]}"
      array[$index]="$file"
}
done

for i in "${array[@]}"
do
  echo $i
done

目前的结果看起来像这样。

$ ./Dates.sh
050915
311015
071115
051215
020116
300116
050316
160416

0 个答案:

没有答案