天天看點

linux大檔案分割 split指令

linux split 指令

  功能說明:切割檔案。

  語  法:split [--help][--version][-<行數>][-b <位元組>][-C <位元組>][-l <行數>][要切割的檔案][輸出檔案名] 【字首】

  補充說明:split可将檔案切成較小的檔案,預設每1000行會切成一個小檔案。

  參  數:

  -<行數>或-l<行數>  指定每多少行就要切成一個小檔案。

  -b<位元組>  指定每多少字就要切成一個小檔案。支援機關:m,k

  -C<位元組>  與-b參數類似,但切割時盡量維持每行的完整性。(這個比較有用,特别是在分割大Sql檔案時,如果' you '

被分割成'yo 和u',那麼cat後運作還是錯誤。

  --help  顯示幫助。

  --version  顯示版本資訊。

  [輸出檔案名]  設定切割後檔案的前置檔案名,split會自動在前置檔案名後再加上編号。

  使用例子:

  split -b 100m filename

1.檔案切割

檔案切割模式分為兩種:

     文本檔案

     二進制模式。

1.1文本模式

文本模式隻适用于文本檔案,用這種模式切割後的每個檔案都是可讀的。文本模式又分為兩種:

     按最大檔案大小切割;

     按文本行數切割。

1.1.1最大檔案大小切割

split -C 5k duanxin split

将文本檔案duanxin按每塊最大5k的大小進行切割,不打碎行。輸出檔案名類似splitaa, splitab……

split -b 5k duanxin split

每個分塊(當然,最後一個不保證)大小都是5k,可能會打碎行。

1.1.2 按文本行數切割

split -l 100 duanxin split

每個分塊100行,不考慮大小。日志分析時應該有用。

1.2 二進制模式

每個分塊(當然,最後一個不保證)大小都是5k,基本不可讀。任何類型檔案都可以用這種切割模式。

2.檔案合并

cat split* >newduanxin

不管用什麼方式切割,合并方法不變。

3.其它

split可以用-a選項指定輸出檔案名的長度。如

split -l 100 -a 3 duanxin split

則輸出檔案出類似于splitaaa,splitaab。不指定時預設為2。

用-b或-C指定分塊大小時,可用的機關有,b for 512bytes, k for 1Kbytes, m for 1 Megbytes.

split 參數:

-a, --suffix-length=N   指定輸出檔案名的字尾,預設為2個

-b, --bytes=SIZE        指定輸出檔案的位元組數

-C, --line-bytes=SIZE  每一輸出檔中,單行的最大 byte 數

-d, --numeric-suffixes  使用數字代替字母做字尾

-l, --lines=NUMBER    NUMBER 值為每一輸出檔的列數大小

grep介紹   (1)grep 的一般格式為 grep [options] 基本正規表達式 [檔案] 

      字元串參數最好采用是雙引号括,一是以防被誤解為shell指令,二是可以用來查找多個單詞組成的字元串 

      -c:隻輸出比對行的記數 

      -i:不區分大小寫(隻适用于單個字元) 

      -h:查詢多個檔案時不顯示檔案名 

      -H:隻顯示檔案名 

      -l:查詢多檔案時隻輸出包含比對字元的檔案名 

      -n:隻顯示比對行及其行号 

      -s:不顯示不存在或無比對文本的錯誤資訊。 

      -v:顯示不包含比對文本的所有行。 

  (2)舉例說明: 

      grep ^[^210] myfile 比對myfile中以非2、1、0開頭的行 

如何删除檔案指定行:

sed

“p” command prints the buffer (remember to use -n option with “p”) 

“d” command is just opposite, its for deletion. ‘d’ will delete the pattern space buffer and immediately starts the next cycle. 

:删除從第4行到第8行 

$sed 4,8d thegeekstuff.txt 

  指令:split -l 300 large_file.txt new_file_prefix -d

系數不是字母而是數字(-d)

linux下檔案分割可以通過split指令來實作,可以指定按行數分割和安大小分割兩種模式。Linux下檔案合并可以通過cat指令來實作,非常簡單。

例如将一個BLM.txt檔案分成字首為 BLM_ 的1000個小檔案,字尾為系數形式,且字尾為4位數字形式

先利用

wc -l BLM.txt       讀出 BLM.txt 檔案一共有多少行

再利用 split 指令

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

将 檔案 BLM.txt 分成若幹個小檔案,每個檔案2482行(-l 2482),檔案字首為BLM_ ,系數不是字母而是數字(-d),字尾系數為四位數(-a 4)

繼續閱讀