Linux中利用shell脚本或split命令切割大文件

blogdaren 2010-08-03 抢沙发 1730人次

问题背景:

系统运维的过程中,日志文件往往非常大,这样就要求对日志文件进行分割。

解决方案-1:

其中apache.log为待分割的大文件,file_$file.log  为分割后的文件,最后为file_1.log,file_2.log,file_3.log……,分割完后的每个文件只有1000行(参数可以自己设置)

#!/bin/bash   
linenum=`wc   -l   apache.log |  awk   '{print   $1}'`   
n1=1   
file=1   
while   [   $n1   -lt   $linenum   ]   
do   
                n2=`expr   $n1   +   999`   
                sed   -n   "${n1},   ${n2}p"   apache.log   >  file_$file.log     
                n1=`expr   $n2   +   1`   
                file=`expr   $file   +   1`   
done 

解决方案-2:

利用split命令,相关参数:
(1)-b:以档案大小来进行分割,后面可加单位,例如 b, k, m 等;
(2)-l:以行数来进行分割;
#按每个文件1000行来分割除
# split -l 1000 apache.log  apache_
输出:apache_aa,apache_ab,apache_ac,........
#按照每个文件100K来分割
# split -b 100k apache.log  apache_
输出:apache_aa,apache_ab,apache_ac,........

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:Linux中利用shell脚本或split命令切割大文件

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting