2014-10-30 47 views
0

我正在嘗試瀏覽一些日誌文件,並且需要從中刪除數據以用於其他軟件。日誌文件是這樣的:使用bash從文件中僅打印一些行

Oct2614 status:ok 0.86.50.86 
Oct2614 status:ok 0.111.122.11 
Oct2714 status:ok 0.21.24.111 
Oct2814 status:ok 0.15.121.12 
Oct2814 status:ok 0.61.51.25 

(IP addresses not real) 

我要打印每天只有一個狀態代碼,所以我怎麼能打印,例如,Oct2614 status:ok 0.86.50.86而忽略第二個實例Oct2614 status:ok 0.111.122.11?使用bash將是最好的,這樣我就可以簡單地將.sh從其中移出並在多個位置使用它。

我試過使用grep 'Oct2614' | uniq但我不熟悉bash命令。

+1

什麼你嘗試這麼遠嗎?這不是代碼編寫網站。 – 2014-10-30 03:04:42

+0

對不起,忘了補充一點。在上面發佈。 – 2014-10-30 03:06:48

+1

你想允許的情況下,你有'Oct ...狀態:錯誤...'?請使用此信息編輯您的問題,而不是在此處回覆。祝你好運。 – shellter 2014-10-30 03:22:45

回答

2
awk '{if (a[$1]++==0) print $0}' file.txt 
1

如果日期始終是相同的字符數,使用uniq -w隱藏其中前7個字符是一樣的前行線:

$ uniq -w7 log.txt 
Oct2614 status:ok 0.86.50.86 
Oct2714 status:ok 0.21.24.111 
Oct2814 status:ok 0.15.121.12 

如果你想搜索從第一個條目一個特定的日期,儘量grep -m限制匹配的數量:

$ grep -m1 '^Oct2614' 
Oct2614 status:ok 0.86.50.86 
相關問題