有人能帮助我使用UNIX脚本从文件的最后一行提取日期,并将其与当前日期进行比较吗?如果文件中的日期在当前日期之间有1小时的延迟,那么回显是吗?
File.txt
18:48:43 iLIKEtoMOVEitMoveIT
18:58:43 iLIKEtoMOVEitMoveIT
19:22:43 iLIKEtoMOVEitMoveIT
clear line到目前为止,我已经想出了如何得到最后一行的时间:
tail -n 2 File.txt | head c-8输出= 19:22:43以及如何将当前日期仅作为时间存储在变量中:
TheCurrentDate="date +"%T""如何比较这2 HH:MM:SS,并计算出它们之间是否已经过了一个小时,然后回答“是”。全部放进script.sh
发布于 2020-05-19 03:23:36
DATE=$(tail -n 2 File.txt | cut -c 1-8 | head -n 1)
FROM_FILE=$(date -d "$DATE" +%s)
NOW=$(date +%s)
DIFFERENCE=$((NOW - FROM_FILE))
if [ $DIFFERENCE -le 3600 ]; then
echo YES
fi其想法是使用+%s将时间戳转换为秒。然后你只需比较数字。
编辑
您的File.txt应该看起来像一个日志文件,在这个日志文件中,日志程序不需要预先准备日期。正如乔纳森·莱弗勒指出的那样,NOW可能是00:15,FROM_FILE可能是23:45。
在这种情况下,date会将FROM_FILE解释为今天的结束,而不是昨天的结束。这可以是临时固定的:
DATE=$(tail -n 2 File.txt | cut -c 1-8 | head -n 1)
FROM_FILE=$(date -d "$DATE" +%s)
NOW=$(date +%s)
if [ $FROM_FILE -gt $NOW ]; then
# it's not really in the future, it's from yesterday
FROM_FILE=$((FROM_FILE - 24 * 3600))
fi
DIFFERENCE=$((NOW - FROM_FILE))
if [ $DIFFERENCE -le 3600 ]; then
echo YES
fihttps://stackoverflow.com/questions/61873744
复制相似问题