如何在某天(日期)之后用awk

时间:2016-07-07 14:53:42

标签: awk

假设现在是(2016年7月7日星期二23:33:33),我想在2周内处理过去的数据。 这意味着我应该在下面的例子中开始打印数据(2016年7月3日星期二12:24:52)。

首先,我认为在下面的代码中,我可以用相关格式显示2周前的日期,如(2016年5月28日星期六21:18:09)。

OS> date --date="14 days ago" | awk '{$5="";print $0;}' 
Thu Jun 23 22:49:47  2016

但是,我不知道如何打印日期比2周前更晚的文本。

你有什么想法吗?

DATA

-- [1] Sat May 28 21:18:09 2016

blah

-- [2] Mon Jun 20 22:52:50 2016

blah

-- [1] Mon Jul 3 12:24:52 2016

blah
blah

-- [99] Mon Jul 3 09:24:52 2016

blah
blah

--
--
-- [33] Thu Jul 7 20:24:52 2016

blah
blah

所需的输出

-- [1] Mon Jul 3 12:24:52 2016

blah
blah

-- [99] Mon Jul 3 09:24:52 2016

blah
blah

--
--
-- [33] Thu Jul 7 20:24:52 2016

blah
blah

2 个答案:

答案 0 :(得分:1)

运行 awk -f script.awk文件

<强> script.awk

BEGIN{
    FS="]";
    cmd="date -u +%s --date=\"14 days ago\""; #get Epoch time before 14 days
    cmd|getline start #set the time in start variable
}
/--[[:space:]]/{ #check for line starting -- 
    flag=0; # reset print flag
    cmd="date +%s -ud\""$2"\""; #get its epoch time
    cmd|getline check #set in variable check
} 
check>start {flag++;check=0} #set print flag
flag

<强>输出

-- [1] Mon Jul 3 12:24:52 2016

blah
blah

-- [99] Mon Jul 3 09:24:52 2016

blah
blah

--
--
-- [33] Thu Jul 7 20:24:52 2016

blah
blah

答案 1 :(得分:1)

一种稍微不同的方法,如果Data在另一个名为Data的文件中,这里是一个使用awk的shell脚本。

let groupMemberRef = rootRef.child("groupMembers")
func userFilter(list: [String]) {
// list is a list of different users (strings) I'm looking through the groups to try to find
for user in list {
    groupMemberRef.queryEqualToValue(true, childKey: user).observeSingleEventOfType(.ChildAdded, withBlock: { (snapshot) in
        print(user)
        print(snapshot)
        print(snapshot.hasChild(user))
    })
}