前言:
**乙個主要網域名稱的日誌包,解壓縮之後有10多個g,當日誌分析系統處理此日誌包時,需要的分析時間過長,而且如分析過程中出錯,要清空資料後再分析,所以需要將日誌進行分割成多個日誌包,通過多個日誌分析系統併發分析,本文主要記錄一下我測試的分割過程。
說明:方法1:(split分割)
語法:split [-《行數》][-b 《位元組》][-c 《位元組》][-l 《行數》][要切割的檔案][輸出檔名]
# gunzip log.txt.gz //一定要先解壓,否則分割的檔案是不能cat/zcat顯示;
# wc -l log.txt //計算乙個檔案的總行數;
208363 log.txt
# split -l 120000 log.txt newlog //通過指定行數,將日誌分割成兩個檔案;
# du -sh *
50m log.txt
29m newlogaa
22m newlogab
# file * //分割後的檔案與原檔案屬性一樣
log.txt: ascii text, with very long lines, with crlf line terminators
newlogaa: ascii text, with very long lines, with crlf line terminators
newlogab: ascii text, with very long lines, with crlf line terminators
# gzip newlogaa newlogab //將分割後的檔案進行壓縮,以便傳輸
另一種方法,通過大小分割(# split -c 26000000 log.txt newlog),-c(大c)是按大小分,並盡量保持按行,-c(小c)就可能分將一行分到不同檔案中。測試-c(大c)沒有問題,相對-l(按行)來說,統計乙個大檔案的位元組要比統計行數要快得多。用-c(大c)還是-l,請按實際情況而定。
方法2:(dd分割)
# gunzip log.txt.gz //一定要先解壓,否則分割的檔案是不能cat/zcat顯示;
# dd bs=20480 count=1500 if=log.txt of=newlogaa //按大小分第乙個檔案
# dd bs=20480 count=1500 if=log.txt of=newlogab skip=1500 //將大小之後的生成另乙個檔案
# file *
log.txt: ascii text, with very long lines, with crlf line terminators
newlogaa: ascii text, with very long lines, with crlf line terminators
newlogab: ascii text, with very long lines, with crlf line terminators
分割沒問題,但會出現同一行分到不同檔案的情況,除非你以及日誌分析系統可以「容忍」。
方法3:(head+tail 分割)
#gzip log.txt.gz //如不解壓縮,下面請用zcat。
# wc -l log.txt //統計乙個行數
208363 log.txt
# head -n `echo $((208363/2+1))` log.txt > newloga.txt //前x行重定向輸出到乙個檔案中;
# tail –n `echo $((208363-208362/2-1))` log.txt >newlogb.txt //後x行重定向輸出到乙個檔案中;
# gzip newloga.txt newlogb.txt //將兩個檔案進行壓縮
方法4:(awk分割)
#gzip log.txt.gz
#awk 『』 log.txt >newloga.txt
#awk 『』 log.txt >newlogb.txt
以上兩個命令,都要遍歷整個檔案,所以考慮到效率,應使用合併成:
# awk 『』 log.txt
總結:以上四種方法,除了dd之外的三種方式都可以很好的整行分割日誌檔案。進行分割時,應考慮在讀一次檔案的同時完成,如不然,按下面的方式分割:
cat log.txt| head –12000 >newloga.txt
cat log.txt | tail –23000 >newlogb.txt
如用此方法分割檔案的後一部分,那麼執行第二行命令檔案時,前x行是白白讀一遍的,執行的效率將很差,如檔案過大,還可能出現記憶體不夠的情況。
對於大日誌分割的幾種方法
ls lrth test.log rw r r 1 root root 645m 5月 30 20 42 test.log wc l test.log 8856340 test.log含義 b分割後的文件大小,單位是byte c分割後的文件,單行最大byte數 d使用數字作為字尾,同時使用 a le...
三種方法進行分水嶺分割
clear,clc 三種方法進行分水嶺分割 讀入影象 filename sar1.bmp f imread filename info imfinfo filename if info.bitdepth 8 f rgb2gray f endfigure,mesh double f 顯示影象,類似集水...
退出迴圈的n種方法
退出迴圈的n種方法,你能想出幾種?1 增加變數,作為退出條件 bool dobreak false for dobreak 2 使用goto for for outer 3 使用return void do lots of work void 4 巢狀if語句 bool isterminated f...