我想用下面的格式与当前日期比较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脚本可以在这里使用。
我想用下面的格式与当前日期比较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脚本可以在这里使用。
假设包含日期的文件看起来像这样:
$ 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 [email protected] 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 [email protected] 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月5日和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
该文件包含的细节象下面这样: 'code' asdffsdvdsds,sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日11:04 asdffsdvdsds,sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日11:04 asdffsdvdsds, sdffsfdswe,123142121,adf123,12341411sdcscr,2017年9月15日上午11点04 'code' 同样,当前代码给出了下面的错误: 日期:无效日期 bash中:行0:[::整数表达预期 – ninja67
@ ninja67你检查了你正在运行的日期命令吗?执行'man date | tail -n 1' –
@ ninja67我已经扩展了我的答案来处理两个日期命令。如果你仍然有问题,请看看并告诉我。 –
你好,你想要什么样的比较作出的,什么是你想要的结果,有什么标志要涨到做。 –
我有一个数据的文件,如果有一个字段与上述格式的日期。我想比较当前日期和文件中的日期,并将包含7天以前日期的行重定向到一个新文件中。 ' – ninja67
'比较文件中的日期'你能告诉我们该文件是怎么样的吗? –