2014-04-24 47 views
0

編輯不追加:與其折騰出重複的數據,我希望它「覆蓋」的重複數據,這意味着離開這個數據,但更新的時間戳尾AWK管如果文件存在

問題1 :

我有一個命令行,如下所示,

tail -f /some/file.log | awk '$2>10 (if (!($1 in a)) print $1, strftime("%Y-%m-%d %H:%M:%S"); a[$1]=1 ;system("")}' > /some/filteredfile.log 

不過,我想從這個輸出僅添加文本文件,如果它已不存在(在第1列) 如果是還有,更新時間戳(第二列)

+3

請一次只有一個問題。 – devnull

+1

如果輸出文件中沒有其他行已經包含該內容,您只想將「$ 1」的內容添加到文件中? –

+0

Etan-Correct,no duplicates – user1983916

回答

1

嘗試:

tail -f /some/file.log | awk ' $2>10 {if (!($1 in a)) print $1; a[$1]=1; system("")}' > /some/filteredfile.log 
+0

在我的awk(3.1.7)中顯示語法錯誤。在!並在打印 – user1983916

+0

現在嘗試?我錯過了周圍的括號...... – anishsane

+0

作品!關於第二部分的任何想法,還是應該將其標記爲答案並提出第二個問題? – user1983916

0

一個問題兩個部分可能是:

tail -f file.txt | awk -v date="$(date +"%Y-%m-%d-%h%m%s")" '$2>10 {print date, $1; system("")} ' > output.log 

應該解決您的第二部分,爲我工作。

+0

%Y-%m-%d%I:%M:%S在我的系統上 – user1983916

+0

如何在X天后刪除它們? – user1983916

+0

問題是,無論數據何時添加,它都會在文件中放入相同的日期/時間 – user1983916