如果条件较旧且具有纪元日期
if condition older with epoch date
我正在创建一个条件来检查纪元格式的实际日期并比较另一个纪元格式的字符串;如果字符串超过 10 天,请执行某些操作...
我试过这样的事情:
#!/bin/bash
timeago='10 days ago'
actual_date=$(date --date "now" +'%s')
last_seen_filter=$(date --date "$timeago" +'%s')
echo "INFO: actual_date=$actual_date, last_seen_filter=$last_seen_filter" >&2
if [ "$actual_date" -lt "$last_seen_filter" ]; then
echo "something"
else
echo "do something"
fi
或
#!/bin/bash
cutoff=$(date -d '10 days ago' +%s)
key="1624684050 1624688000"
while read -r "$key"
do
age=$(date -d "now" +%s)
if (($age < $cutoff))
then
printf "Warning! key %s is older than 10 days\n" "$key" >&2
fi
done < input
这还不足以满足我的需要,我在名为 converted_data
的文件中有纪元日期,我需要在比较时包含此字符串。
1624684050
1634015250
1614661650
1622005650
不清楚您要做什么,但也许 GNU awk 会让您入门:
$ awk '
BEGIN { today=strftime("%F") }
{
secs = [=10=]
days = 0
date = strftime("%F",secs)
while ( strftime("%F",secs+=(24*60*60)) < today ) {
++days
}
print [=10=]":", date, "->", today, "=", days
}
' file
1624684050: 2021-06-26 -> 2021-06-13 = 0
1634015250: 2021-10-12 -> 2021-06-13 = 0
1614661650: 2021-03-01 -> 2021-06-13 = 102
1622005650: 2021-05-26 -> 2021-06-13 = 17
未来日期的 0
是因为您只询问了过去 10 天的日期,所以我不关心适应过去和未来的增量。我也没有考虑太多所以检查逻辑和数学!
我正在创建一个条件来检查纪元格式的实际日期并比较另一个纪元格式的字符串;如果字符串超过 10 天,请执行某些操作...
我试过这样的事情:
#!/bin/bash
timeago='10 days ago'
actual_date=$(date --date "now" +'%s')
last_seen_filter=$(date --date "$timeago" +'%s')
echo "INFO: actual_date=$actual_date, last_seen_filter=$last_seen_filter" >&2
if [ "$actual_date" -lt "$last_seen_filter" ]; then
echo "something"
else
echo "do something"
fi
或
#!/bin/bash
cutoff=$(date -d '10 days ago' +%s)
key="1624684050 1624688000"
while read -r "$key"
do
age=$(date -d "now" +%s)
if (($age < $cutoff))
then
printf "Warning! key %s is older than 10 days\n" "$key" >&2
fi
done < input
这还不足以满足我的需要,我在名为 converted_data
的文件中有纪元日期,我需要在比较时包含此字符串。
1624684050
1634015250
1614661650
1622005650
不清楚您要做什么,但也许 GNU awk 会让您入门:
$ awk '
BEGIN { today=strftime("%F") }
{
secs = [=10=]
days = 0
date = strftime("%F",secs)
while ( strftime("%F",secs+=(24*60*60)) < today ) {
++days
}
print [=10=]":", date, "->", today, "=", days
}
' file
1624684050: 2021-06-26 -> 2021-06-13 = 0
1634015250: 2021-10-12 -> 2021-06-13 = 0
1614661650: 2021-03-01 -> 2021-06-13 = 102
1622005650: 2021-05-26 -> 2021-06-13 = 17
未来日期的 0
是因为您只询问了过去 10 天的日期,所以我不关心适应过去和未来的增量。我也没有考虑太多所以检查逻辑和数学!