有个文件要处理,因为很大,所以想把它切成若干份,每份N行,以便并行处理。split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,为提高可读性,生成日志等
命令格式
- -b:值为每一输出档案的大小,单位为 byte。
- -C:每一输出档中,单行的最大 byte 数。
- -d:使用数字作为后缀。
- -l:值为每一输出档的列数大小。
测试
环境:Centos 6.5 测试文件:test.txt(大小493257字节,行数4545行)
①按行数分割
# split -l 1000 test.txt new_test.txt //文件一共4545行,按每个文件1000行分割,那么生成5个文件
# ls
new_test.txtaa new_test.txtab new_test.txtac new_test.txtad new_test.txtae test.txt //分别以a、b、c、d、e结尾
加上-d,使用数字后缀;加上–verbose,显示分割进度(可有可无)
# split -l 1000 -d test.txt new_test.txt --verbose
creating file `new_test.txt00'
creating file `new_test.txt01'
creating file `new_test.txt02'
creating file `new_test.txt03'
creating file `new_test.txt04'
# ls
new_test.txt00 new_test.txt01 new_test.txt02 new_test.txt03 new_test.txt04 test.txt //结尾分别00、01、02、03、04
② 按字节大小分割
# split -b 100k -d test.txt new_test.txt //文件一共400多K,每个100K,所以分割五份
cat命令合并以上分割文件
# cat new_test.txt* > merge_file.txt
执行完毕,查看文件大小,与源文件大小一致。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/2323.html