linux分割文本

按行数,分割文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#按行数,分割文件
#文件名
FILE=git-1.8_rpm.tar.base64
#分割行数
CUT_LINE=50000
################################################
#文件总行数
WC=`cat $FILE|wc -l`
#
NUM=1
while true
do
    # #判断是否偶数
    # if [ ! $((i % 2)) -eq 0 ];then    continue ;fi

        #
        if [ -z $START ];then
            START=1
            END=$CUT_LINE
        else
            START=$(( END + 1 ))
            END=$((START + CUT_LINE -1))
        fi 

        #

        sed -n "$START,$END"p $FILE > $FILE.$NUM
        #
        if [ $END -ge $WC ];then break;fi
        NUM=$((NUM+1))
done

按文件分数,分割文本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#按文件分数,分割文本
FILE=git-1.8_rpm.tar.base64
CUT_NUM=7
###################################
WC=`cat $FILE|wc -l`
AVG_LINE=$((WC / CUT_NUM + 1))
for i in `seq   $CUT_NUM`
do
    # #判断是否偶数
    # if [ ! $((i % 2)) -eq 0 ];then    continue ;fi

        #
        if [ -z $START ];then
            START=1
            END=$AVG_LINE
        else
            START=$(( END +1 ))
            END=$((START + AVG_LINE -1 ))
        fi 

        #
        sed -n "$START,$END"p $FILE > $FILE.$i
        if [ $END  -ge  $WC ];then break ;fi    

done