2013-01-16 59 views
2

我試圖篩選日誌文件,並正在到的問題,我有什麼到目前爲止以下,這是不行的,尾-f,AWK並輸出到文件>

tail -f /var/log/squid/accesscustom.log | awk '/username/;/user-name/ {print $1; fflush("")}' | awk '!x[$0]++' > /var/log/squid/accesscustom-filtered.log 

目標爲獲取包含

ipaddress1 username 
ipaddress7 
ipaddress2 user-name 
ipaddress1 username 
ipaddress5 
ipaddress3 username 
ipaddress4 user-name 

一個文件並保存到accesscustom-filtered.log

ipaddress1 
ipaddress2 
ipaddress3 
ipaddress4 

其作品,未經輸出訪問custom-filtered.log,但>中的某些內容不能正常工作,並且文件最終爲空。

編輯:改變了原來的例子是正確的

+3

我沒看到那個'awk'命令的結束單引號(''')。這是你有什麼? – chrisaycock

+0

tail -f是一個非終止命令,所以我不確定你可以通過管道將它輸出到像 –

+1

那樣的文件中,你可以將它變成很時髦的東西。 – peteches

回答

4

使用tee

tail -f /var/log/squid/accesscustom.log | awk '/username/;/user-name/ {print $1}' | tee /var/log/squid/accesscustom-filtered.log 

參見:Writing 「tail -f」 output to another fileTurn off buffering in pipe

注:awk不會在超級用戶例如緩衝像grep ,所以你不需要用你的awk命令做任何特別的事情。 (more info

+0

從來沒有聽說過T恤,讓我試試看...注意在我原來的帖子中的新命令,發佈時忘記了一部分 – user1983916

+0

不起作用,我做了一個沒有發球臺的命令......而有一個命令發到了一個文件中。一個沒有三通的輸出正確的屏幕,一個沒有添加到過濾文件 – user1983916

+0

看起來像第二個awk打破它,沒有它看起來工作 – user1983916