4 ~- m3 [0 h# |; ^: o* }: I
当面临将一个大文件进行切分时,linux的split命令是很好的选择。它包含多种参数,支持按行、大小进行切分。: x$ e$ G* u7 W; m/ _+ \* X2 `
split命令的语法如下:
' o" l! K$ E7 f0 Y" O4 k$ @. ^+ xsplit [--help][--version][-a ][-b][-C ][-l ][要切割的文件][输出文件名前缀]: U, {, [" ^- R9 b
对应的参数描述如下:
! e. q* v) Z7 `6 F0 s! w-a, --suffix-length=N
( ^1 v, m, q, T$ N6 r/ { 使用的后缀长度 (默认为 2)
0 A9 U( Q( J2 ^) k9 [+ Q B-b, --bytes=SIZE/ z: [! k2 V/ T7 k+ W
每个输出文件的字节大小2 s. D2 |6 u: E
-C, --line-bytes=SIZE, l+ U. @: u% j9 |& F' F8 f
每个输出文件每行的最大字节大小9 K& D8 u: @+ E- J% a
-d, --numeric-suffixes! n" \0 E7 c) }
使用数字后缀代替字母后缀
1 L4 }- s: t: b# z0 G-l, --lines=NUMBER, ^' \! i* Z4 T0 P$ @* i ]7 U
设定每个输出文件的行数
5 c4 H" z! S: m4 A' t" P--help 显示帮助信息 Y" w; G1 Y$ f
--version( g. `( X7 [* \ K
显示版本信息
6 }& U" U1 X5 Z下面举几个例子:% ]- k* r* r" X1 n
1)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。命令:
" ^& M0 L. r/ h2 e! i% ~; C. P7 T$ split -b 20m splitTest.txt) a% N. O5 D% {! x& Q8 c
$ ls
R2 Y, Q9 L. o+ r& t+ isplitTest.txt xaa xab xac
9 n, F% L) ]- J) z1 z2)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。指定分割后的文件前缀位split,命令:2 b H- U. b1 c( ?
$ split -b 20m splitTest.txt split# S$ `' J' E. Q ~ U# Z
$ ls
c+ |" ?3 n* |splitaa splitab splitac splitTest.txt. w" P, m* l0 Y2 [) X
3)将文件splitTest.txt分割成多个文件,每个文件50万行。命令:; ~' c& L4 i" h( L: O" F
$ wc -l splitTest.txt 6 Y8 T3 k& L! k7 [
1502216 splitTest.txt+ M9 n9 x) b# U- e
$ split -l 500000 splitTest.txt split
; _# V9 B6 Q0 k% M4 Q5 C$ ls
5 g l/ ~" {6 ^splitaa splitab splitac splitad splitTest.txt& R+ \6 p" r V" g
4)将文件splitTest.txt分割成多个文件,每个文件50万行。指定分割后的文件后缀为数字,数字位数为3位,命令:, G ~+ E- S! w! _* c4 \
$ wc -l splitTest.txt
" k$ D) ^% N9 F/ v1502216 splitTest.txt
5 f; F$ W- P& Y, _3 V$ split -l 500000 -d -a 3 splitTest.txt split
, m( O7 A1 I; B3 L) w$ ls
% y: \+ t3 F# M6 y( c" Lsplit000 split001 split002 split003 splitTest.txt* W @9 M$ {0 H0 e$ ]/ z+ s a
可以使用cat命令将切分后的文件合并成新的文件:
! d1 |6 U- a5 ]$ cat split0* > original.txt |