Linux

Grep 在一個巨大的日誌文件(> 14 GB)中只有最後一個 x GB?

  • January 15, 2018

我需要在一個巨大的日誌文件(超過 14 GB)中搜尋一些東西。我很確定它在最後 4 GB 左右。

有沒有辦法跳過第一個 X GB 來加快速度?

我想你可以使用tail-c通過使用switch只輸出最後 4GB 左右

-c,–字節=

$$ + $$NUM

輸出最後 NUM 個字節;或使用 -c +NUM 從每個文件的字節 NUM 開始輸出

您也可以通過將dd設置為您想要開始的偏移量bs=1來做一些事情,例如skip

dd if=file bs=1024k skip=12g | grep something

我只是發布這個,因為一些評論要求它。

我最終使用的是(15 GB 文件)。它工作得非常快,為我節省了大量時間。

tail -f -c 14G file | grep something

我還在同一個文件上做了一個非常基本的基準測試。我測試過:

grep xxx 文件

// 永遠耗時(> 5 分鐘)

dd if=file bs=1 跳過=14G | grep xxx

// 非常快 < 1 秒

尾-c 14g | grep xxx

// 相當快 < 2 秒

tail只是有點短。

**注意:**使用的後綴gG每個命令不同(Ubuntu 15.10)

引用自:https://serverfault.com/questions/829593