文件中的日期差异(以天为单位)

Date differences in days from a file

我从一个文本文件中提取了 2 个日期列,我想创建一个新文件,其中每一行都有日期差异(天数)。使用 datediff(来自 https://github.com/hroptatyr/dateutils)手动将日期输入命令行(例如 ddiff 2014-03-17 2013-09-19 returns -179)。行数多,手动做不可行

通过管道传输文件内容 cat dates_file.txt | ddiff 并通过 xargs cat dates_file.txt | xargs | ddiff 得到我 ddiff: Error: reference DATE must be specified。什么是好的方法?

dates_file.txt 2014-02-03 2013-11-29 2015-12-07 2015-05-13 2015-01-23 2014-07-31 2012-02-28 2012-01-17 2014-03-17 2013-09-19 ...

预期输出 -66 -208 -176 -42 -179 ...

要将 ddiffxargs 一起使用:

xargs -n 2 ddiff < dates_file.txt

或者,使用 perlDate::Calc 模块:

perl -MDate::Calc -ne '@a = /^(\d{4})-(\d\d)-(\d\d)\s+(\d{4})-(\d\d)-(\d\d)$/ or die; print Date::Calc::Delta_Days(@a), "\n"'

在命令后的参数中提供文件,或将数据提供给标准输入。

如果某些行没有预期的格式,这会使用 or die 进行错误检查。如果文件格式可能不同,请调整正则表达式或脚本...