我想将shell脚本中的日期与下面的格式与当前日期进行比较,并返回一些标记。
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
这里可以使用Awk脚本。
答案 0 :(得分:0)
假设包含日期的文件如下所示:
$ cat file1
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM
Oct 05 2017 10:03AM
Oct 07 2017 10:03AM
将此用于GNU日期
cat file1 | xargs -I@ bash -c " \
seven_days_ago=$(date --date='7 days ago' +%s); \
input=\$(date --date=\"@\" +%s); \
if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
echo \"@\"; \
fi;"
这适用于BSD日期
cat file1 | xargs -I@ bash -c " \
seven_days_ago=$(date -v-7d +%s); \
input=\$(date -j -f \"%b %d %Y %R%p\" \"@\" +%s); \
if [ \"\$seven_days_ago\" -gt \"\$input\" ]; then \
echo \"@\"; \
fi;"
输出如下。这使得10月05日和07日的日期减少了7天。
Sep 15 2017 11:04AM
Sep 16 2017 10:07AM
Sep 19 2017 11:44AM
Sep 20 2017 10:08AM
Sep 21 2017 10:03AM
Oct 02 2017 10:03AM
您如何区分GNU日期和BSD日期?
检查执行:
$ man date | tail -n 1
GNU coreutils 8.22
VS
$ man date | tail -n 1
BSD August 16, 2007 BSD