我的文件中写满了这种格式的日期(2002-09-26 02:20:30), 我想提取文件末尾的最后5天,这是我写的
END-DATE=tail -1 my file (which is 2002-09-26 02:20:30)
time=$(expr 60 * 60 * 24 * 5) ( counting 5days which is 432000)
up to know every thing is ok ! the problem is with next line,
START-DATE=`expr END-DATE - time`
似乎错了:expr: non-numeric argument
我应该如何将此时间转换为纪元时间?
答案 0 :(得分:1)
EDATE
未定义,也许您输错了,它应该是END-DATE
?
答案 1 :(得分:1)
你需要参考变量,EDATE vs $ EDATE(你真的是指END-DATE吗?)
START_DATE=`expr $EDATE - time`
(请注意,您不能使用-in shell变量名,因此START-DATE和END-DATE无效。请将它们命名为START_DATE和END_DATE)
答案 2 :(得分:1)
如果您只想在给定时间戳之前5天获得日期并安装GNU Coreutils,则可以使用date -d "$(tail -n 1 some/file.ext) 5 days ago"
;如果您希望采用特定格式,请尝试查看手册页date(1)
(即输入man 1 date
)。
答案 3 :(得分:0)
我已经写了一堆工具(dateutils)来解决这些问题,特别是dgrep
可能会有所帮助:
脱下袖口,我会去
EDATE=$(tail -n1 MY_FILE)
THRES=$(dadd "${EDATE}" -5d)
dgrep ">=${THRES}" < MY_FILE