我想过滤一个文件,并删除(或写入另一个文件),只有那些日期是"真正"比现在更小,比如说2小时30分钟前(150分钟)。我不需要能找到绝对价值的命令" 2017-03-21 04:36:19" - 然后删除所有行。因为线条不存在很有可能(秒,然后是分钟,这个过滤器会给所有文件不删除)。
我有下一格式的数据:
2017-03-18 01:27:12 bla bla
2017-03-18 02:14:11 bla bla
2017-03-20 04:37:14 bla bla
2017-03-21 02:25:59 bla bla
2017-03-22 05:12:43 bla bla
时间格式: %Y-%m-%d%H:%M:%S
我在谷歌搜索,并通过许多搜索查询尝试第一页上的所有内容。
答案 0 :(得分:2)
awk -vdate=$(date -d "150 minutes ago" '+%Y-%m-%d%H:%M:%S') \
'$1$2 >= date { print }' log
答案 1 :(得分:1)
在awk中:
awk '
BEGIN{ now=systime() } # now in seconds
{
then=$1 " " $2 # then might not be a good var name though :)
gsub(/[-:]/," ",then) # making mktime fit variable out of then
then=mktime(then) # then then to seconds
if(then < now-604800) # compare, 604800 is 7 days in seconds
print # output older than that
}' file
2017-03-18 01:27:12 bla bla
2017-03-18 02:14:11 bla bla
2017-03-20 04:37:14 bla bla