我有小型文件(100)的web請求(apache std格式)行有多個來自客戶端的請求。我想只在我的文件中有一個來自UNIQUE IP的請求(行)列表,並且是最新的條目LInux排序/ uniq apache日誌
我到目前爲止 /home/$:cat all.txt | awk'{print $ 1}'| sort -u | 「{print the whole line ??}」
上面給出了IP(大概30是正確的),現在我需要剩下的行(請求)。
我有小型文件(100)的web請求(apache std格式)行有多個來自客戶端的請求。我想只在我的文件中有一個來自UNIQUE IP的請求(行)列表,並且是最新的條目LInux排序/ uniq apache日誌
我到目前爲止 /home/$:cat all.txt | awk'{print $ 1}'| sort -u | 「{print the whole line ??}」
上面給出了IP(大概30是正確的),現在我需要剩下的行(請求)。
使用關聯數組來跟蹤其IPS你發現已經:
awk '{
if (!found[$1]) {
print;
found[$1]=1;
}
}' all.txt
這將打印每個IP的第一行。如果你想,那麼最後一個:
awk '
{ found[$1] = $0 }
END {
for (ip in found)
print found[ip]
}
' all.txt
我恨唯一不作爲排序都使用相同的選項,或者諸如此類不能做什麼它說,我認爲這應該工作[1],
tac access.log | sort -fb -k1V -u
但很可惜,它沒有;
因此,似乎我們堅持在做一些愚蠢像
cat all.txt | awk '{ print $1}' | sort -u | while read ip
do
tac all.txt | grep "^$ip" -h | head -1
done
這實在是低效率的,但「作品」(沒有測試它:模塊錯字當時)
[1根據該男子頁
下面應該工作:
tac access.log | sort -f -k1,1 -us
這需要以相反的順序文件並執行使用第一場一個穩定的排序,僅保留的唯一項目。
例行: 152.111.yy.xx - - [04 /月/ 2011:14:49:26 0200] 「POST /requrst.php?q=123」 所以我只想要LAST POST-請求一個IP沒有任何IP的重複請求 – Jacob 2011-05-03 12:58:52
請給出更多輸入和期望輸出的例子。 – Marcin 2011-05-03 13:24:12