1
我想將程序的輸出分割成更小的文件。這是一個長期運行的程序,它將輸出打印到stderr,我想用一系列較小的文件而不是一個巨大的文件捕獲日誌。所以,我有什麼是:流式分割
program 2>&1 | split -l100 &
......但令我非常沮喪,我發現了split
工具實際上並沒有寫任何文件到磁盤,直到輸入緩衝區結束。我想要的是一個流媒體工具,可以自動將輸入以流方式複製到輸出文件,而不必等到源流結束,這在我的情況中是不必要的。我也嘗試使用split
工具的-u
選項,但它似乎不起作用,除非您選擇-n
選項,但該選項並不適用於我的情況,因爲生成的文件數量可能會任意高。有沒有可以讓我這樣做的Unix工具?
嘗試使用'awk'。它可以每100行打開一個新的輸出文件。 – Barmar
爲什麼不能'program 2>&1 | split -l100 - output_&' –
@Barmar我嘗試了這裏的方法http://stackoverflow.com/questions/25712730/split-file-by-number-of-lines-and-pattern-in-awk-perl,但它沒有我想要的流式效果。它似乎仍然只是在輸入流結束後將更改提交到磁盤。 –