Cat

如何尾/grep/awk 文件的最後 N 個字節,而不是行

  • October 1, 2012

我有一個應用程序正在記錄到純文字日誌文件(myapp.log),但它似乎沒有在每個日誌條目的末尾寫入換行符。如果我執行一個命令,tail -n 50 myapp.log我實際上會收到數百“行”的文本(日誌條目)。

這個日誌文件非常大,大約 1GB,誰知道最後一個 CR 和/或 LF 是多久以前插入的。例如,我怎麼能抓住最後的 2MB?

使用-c開關(2MB = 2 * 1024 * 1024 = 2097152 字節):

tail -c 2097152 myapp.log

感謝Petr Uzel的建議。一些尾部實現允許添加一個單位來列印最後的千字節 (k) 或兆字節 (m),例如:

tail -c 2m myapp.log

但是請注意,它不是標準的(在 POSIX、UNIX (SUS) 或 Linux (LSB) 中都沒有)並且不可移植。另請注意,由於術語“Mega”/“kilo”……及其縮寫(M,k……)具有模棱兩可的含義(1000 vs 1024),因此無法保證這個或那個實現tail將意味著什麼2m(儘管支持它的目前實現的目前版本似乎適用於 1024 變體)。

引用自:https://unix.stackexchange.com/questions/49594