Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Shell 格式中的日期比较_Shell_Unix_Awk - Fatal编程技术网

Shell 格式中的日期比较

Shell 格式中的日期比较,shell,unix,awk,Shell,Unix,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

我想将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 -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月5日和7日的日期,这两个日期接近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


假设包含日期的文件如下所示:

$ 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月5日和7日的日期,这两个日期接近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


您好,您想要进行什么样的比较,您想要的结果是什么,您想要提升什么标志。我有一个文件,其中包含一些数据,如果上面的格式中有一个日期字段。我想将当前日期与文件中的日期进行比较,并将包含早于7天的日期的行重定向到新文件中。
要比较文件中的日期
能否向我们展示该文件的外观?您可以使用此选项,读取格式化日期,然后进行简单比较。不幸的是,我现在可以测试它是否有效。您好,您希望进行什么样的比较,您希望得到什么结果,您希望升起什么标志。我有一个文件,其中包含一些数据,如果有一个字段的日期格式如上所述。我想将当前日期与文件中的日期进行比较,并将包含早于7天的日期的行重定向到新文件中。
要比较文件中的日期
能否向我们展示该文件的外观?您可以使用此选项,读取格式化日期,然后进行简单比较。不幸的是,我现在可以测试它是否有效。该文件包含以下详细信息:
code
asdffsdvdsds,sdffsfdswe,123142121,adf1231231411sdcsc,2017年9月15日11:04AM asdffsdvdsds,sdffsfdswe,123142121,adf1231231411sdcsc,2017年9月15日11:04AM asdffsdvdsds,sdffsfdswe,123142121,adf123231231411sdcsc,2017年9月15日上午11:04
code
同时,当前代码给出以下错误:日期:无效日期bash:第0行:[::整数表达式expected@ninja67你是否检查了你正在运行的
date
命令?执行
man-date | tail-n1
@ninja67我已经扩展了我的答案来处理这两个日期命令。看一看,如果你仍然有问题,请告诉我。代码正在捕获完整的行,而不是最后一个字段,即我们必须使用日期进行比较。因此,将错误视为无效日期。此外,日期是GNU。@ninja67当然,我编写的命令无法处理您在此处注释中显示的文件内容。在回答的开始部分,我已经说明了我的假设输入文件的外观。为了修改您的输入文件,您需要要执行这个
catfile1 | awk-F“,”{print$6}“
。这将删除除日期字符串的最后一列之外的所有内容。该文件包含以下详细信息:
code
asdffsdvdsds,sdffsfdswe,123142121,adf23123411sdcscr,2017年9月15日11:04 am asdffsdvdsds,sdffsfdswe,123142121,adf12323411sdcscr,2017年9月15日11:04 am asdffsdvdsds,sdffsfdswe,123142121,adf23123411sdcscr,SeP15 2017 11:04AM
code
当前代码也给出了以下错误:日期:无效日期bash:第0行:[::整数表达式expected@ninja67你是否检查了你正在运行的
date
命令?执行
man-date | tail-n1
@ninja67我已经扩展了我的答案来处理这两个日期命令。看一看,如果你仍然有问题,请告诉我。代码正在捕获完整的行,而不是最后一个字段,即我们必须使用日期进行比较。因此,将错误视为无效日期。此外,日期是GNU。@ninja67当然,我编写的命令无法处理您在此处注释中显示的文件内容。在回答的开始部分,我已经说明了我的假设输入文件的外观。为了修改您的输入文件,您需要要执行此
cat file1 | awk-F“,“{print$6}”
,它将删除除日期字符串最后一列之外的所有内容。