cmd 文字檔案分割 通過split命令分割大檔案

2021-10-13 14:50:19 字數 1522 閱讀 7055

場景

線上出了問題,我需要去查詢log來定位問題,但是由於線上資料量龐大,這些log檔案每過乙個小時就會自動回滾一次,儘管如此,有的log檔案依然達到了五六g以上的大小。

對於這種巨大的log檔案,常用的一些文字編輯器諸如editplus、notepad++就不用說了,開啟幾百m的檔案都會很卡,上g的直接程式崩潰。雖然ultraedit對於大檔案的讀取會友好一些,但開啟這種五六g的檔案時也會陷入長時間的無響應狀態。

後來我又得知了乙個看log神器——glogg,開啟五六g的大檔案速度很快,但是有個問題,就是只能讀取檔案,不能編輯檔案。畢竟我不只是要檢視log,有時候還要對這些有用的log資訊進行編輯。最後還是決定先把大檔案分割成數個小檔案,再用ultraedit來檢視這些檔案。

使用split命令分割大檔案

在linux下,切割和合併檔案可以使用split和cat命令來實現。

在windows下,安裝git bash也可以使用split和cat命令。

分割檔案的命令是split,通過輸入split --help可以查詢幫助資訊。假設現在有個6gb大小的檔案test.log,這裡簡單介紹下幾種分割的方式:

按大小分割檔案

split -b 1000000000 test.log

-b引數表示按位元組大小進行分割,在數字後邊要指定被分割的檔名。這裡在輸入檔名時有個小技巧,可以直接把該檔案拖動到cmd視窗中,會自動輸入該檔案的具體目錄。這裡的檔案還可以使用萬用字元,比如split -b 1000000000 *。

這個命令表示按1000000000byte的大小進行分割,近似於1gb,大概是953mb的大小。對於這個6gb大小的檔案test.log,會被分割成6個小檔案。這些小檔案的命名是有規律的:xaa、xab、xac、xad、xae、xaf。如果你分割了非常多的小檔案,當檔名到了xyz之後,會變成xzaaa、xzaab、xzaac、xzaad……所以不用擔心小檔案過多而導致檔案重名什麼的。

當然,上邊的這種寫法不夠人性化,我們可以使用其他的單位來指定分割的大小:k、m。k表示kb,m表示mb。

split -b 100k test.log表示將test.log按照100kb的大小進行分割。

split -b 100m test.log表示將test.log按照100mb的大小進行分割。

按照所有行數加起來的最大位元組數進行分割

split -c 100k test.log

-c引數表示按照所有行數加起來的最大位元組數進行分割,同樣可以使用k或者m作為單位,其實效果和上邊的-b差不多,只是在切割時將盡量維持每行的完整性。

按照行數進行分割

split -l 1000 test.log

split -1000 test.log

-l引數表示按照行數進行分割,即乙個小檔案中最多有多少行,-l number可以縮寫成-number,上邊的命令表示按照1000行乙個小檔案進行分割。

注意點這三種分割的方式不能混合使用,如下:

split -l 3000 -c 100k *

會報錯split: cannot split in more than one way。

linux下分割文字檔案

linux split 命令 功能說明 切割檔案。語 法 split help version 行數 b 位元組 c 位元組 l 行數 要切割的檔案 輸出檔名 補充說明 split可將檔案切成較小的檔案,預設每1000行會切成乙個小檔案。參 數 行數 或 l 行數 指定每多少行就要切成乙個小檔案。b...

Python實現大文字檔案分割

python 2 通過檔案拖拽或檔案路徑輸入,實現自定義大文字檔案分割。coding gbk import os,sys,shutil is file exits false while not is file exits files list if len sys.ar 1 print 請輸入要切...

shell按行分割文字檔案

大家常用的分割文字的方法都是通過sed n 命令來操作,sed 的優點是可以指定具體的行,缺點每次分割要重新讀取整個文字,效率低了點。在高人指點下發現split這個方法好用些,也參考了其他的資料總結一下split用法。split 引數 需要分割的檔案 b size 對file進行切分,每個小檔案大小...