当面临将一个大文件进行切分时,linux的split命令是很好的选择。它包含多种参数,支持按行、大小进行切分。
split命令的语法如下:
split[--help][--version][-a][-b][-C][-l][要切割的文件][输出文件名前缀]
对应的参数描述如下:
-a,--suffix-length=N使用的后缀长度(默认为2)-b,--bytes=SIZE每个输出文件的字节大小-C,--line-bytes=SIZE每个输出文件每行的最大字节大小-d,--numeric-suffixes使用数字后缀代替字母后缀-l,--lines=NUMBER设定每个输出文件的行数--help显示帮助信息--version显示版本信息
下面举几个例子:
1)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。命令:
$split-b20msplitTest.txt$lssplitTest.txtxaaxabxac
2)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。指定分割后的文件前缀位split,命令:
$split-b20msplitTest.txtsplit$lssplitaasplitabsplitacsplitTest.txt
3)将文件splitTest.txt分割成多个文件,每个文件50万行。命令:
$wc-lsplitTest.txt1502216splitTest.txt$split-l500000splitTest.txtsplit$lssplitaasplitabsplitacsplitadsplitTest.txt
4)将文件splitTest.txt分割成多个文件,每个文件50万行。指定分割后的文件后缀为数字,数字位数为3位,命令:
$wc-lsplitTest.txt1502216splitTest.txt$split-l500000-d-a3splitTest.txtsplit$lssplit000split001split002split003splitTest.txt
可以使用cat命令将切分后的文件合并成新的文件:
$catsplit0*>original.txt