2016-07-07 6 views
1

今は(Tue Jul 7 23:33:33 2016)と仮定して、今から2週間以内に過去のデータを処理したいと考えています。 以下の例で、(Tue Jul 3 12:24:52 2016)からのデータの印刷を開始する必要があることを意味します。何日か後にテキストを印刷する方法(日付)awk

まず、以下のコードで2週間前の日付を関連する形式(土曜日5月28日21:18:09 2016)で表示できると思います。

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 
+0

は、テストデータo/pファイルで正しい日です。私は6月20日の火を見ることができますが、それは月です。 – Chet

+0

私はちょうど正しいことができないようにデータに値を入れます。それを修正しました。ありがとう。 – Sigularity

答えて

1

少し異なるアプローチが、ここではawkを使用してシェルスクリプトです。

#!/bin/sh 

(date --date="14 days ago"; cat Data) | awk 'BEGIN \ 
    { table = "JanFebMarAprMayJunJulAugSepOctNovDec" } 

    { if (NR == 1) { 
     x = index(table, $2) 
     if (length(x) == 1) x = "0" x 
     pt = $6 x $3 $4 
#  print index(table, $2) " " $0 " " pt 
     } 
     if ($1 substr($2,1,1) == "--[") { 
     x = index(table, $4) 
     if (length(x) == 1) x = "0" x 
     st = $7 x $5 $6 
#  print index(table, $4) " " $0 " " st 
     prtsw = 0 
     if (st >= pt) { prtsw = 1 } 
     } 
     if (prtsw == 1) { print $0 } 
    }' 
+0

素晴らしい。それは素晴らしい作品です。どうもありがとうございます。 – Sigularity

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 
+0

これは動作しますが、ファイルサイズが20MBを超える場合は、エラーが表示されます。 [パイプを開くことができません]。私はそれが多くのパイプを使用すると思います。ありがとうございました。 – Sigularity

関連する問題