Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在BASH中使用日期数组标记月份_Bash_Date - Fatal编程技术网

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

如何在BASH中使用日期数组标记月份,bash,date,Bash,Date,我被一个似乎有太多冲突变量的问题所困扰,这使得它不可行。因此,我希望得到任何建议,或建议是否真的不可行的实施 现在我有一个脚本,它接受一个值,例如xx-xx-160416-xx。。。。 该脚本筛选出日期并按升序对日期进行排序 因此,对于这些日期中的每一个,它将覆盖总共3个月。 例如,010416意味着我将标记2016年的1月、2月和3月 我不希望有重复项,这意味着如果我有以下3个值 010416 010516 010716 我将只保留010416和010716,因为不再需要010516 我知道

我被一个似乎有太多冲突变量的问题所困扰,这使得它不可行。因此,我希望得到任何建议,或建议是否真的不可行的实施

现在我有一个脚本,它接受一个值,例如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

甚至不清楚什么是日期,或者你所说的“标记”是什么意思。010416是指2016年1月4日的值吗?你的其他一些例子看起来有更古怪的mmddyy格式。如果你能澄清你的需求,我猜整个Bash脚本可以被一个更简单的Awk脚本取代。这正好解决了宾果游戏的问题。