当前位置:首页 > linux教程 > 列表

linux下shell脚本切割大文件为多个小txt文件

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-21 09:47:13 浏览: 评论:0 

小编有一个几百GB的txt文件了,里面存储的是电话号码,那么这些电话号码小编希望分成小文件了,下面就来给各位介绍利用shell脚本切割大文件为多个小txt文件例子.

解决方法:

1.先使用split命令切割大文件,每个小文件保存100万行.

split 参数:

-b:后面可接欲分割成的档案大小,可加单位,例如 b,k,m 等.

-l:以行数来进行分割;

#按每个文件1000行来分割除

split -l 1000 httperr8007.log httperr

httpaa,httpab,httpac ........

#按照每个文件100K来分割

split -b 100k httperr8007.log http

httpaa,httpab,httpac ........

2.遍历所有100万行文件,逐个新建目录再切割成1万行小文件

  1. #!/bin/bash 
  2.  
  3. bigfile="1.txt" 
  4. split -l 1000000 $bigfile text 
  5.  
  6. currdir=1 
  7. for smallfile in `ls | grep "text*"
  8. do 
  9.     linenum=`wc -l $smallfile | awk '{print $1}'`    
  10.     n1=1    
  11.     file=1 
  12.  
  13.     savedir="$smallfile$currdir" 
  14.     if [ ! -d "$savedir" ] 
  15.     then 
  16.         mkdir $savedir 
  17.     fi 
  18.  
  19.     while [ $n1 -lt $linenum ]    
  20.     do   --phpfensi.com 
  21.         n2=`expr $n1 + 9999`    
  22.         sed -n "${n1},${n2}p" $smallfile > $savedir/text$file.txt 
  23.         n1=`expr $n2 + 1`    
  24.         file=`expr $file + 1`    
  25.     done 
  26.  
  27.     currdir=`expr $currdir + 1` 
  28. done

Tags: shell脚本切割 linux切割大文件

分享到: