shell 文件分割

前端之家收集整理的这篇文章主要介绍了shell 文件分割前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

分割文件

#!/bin/bash 
# 分割大文件,以100w行为一个文件单位

### 1. set workdir
SCRIPT_NAME=$0
echo ${SCRIPT_NAME}
WORK_DIR=`dirname ${SCRIPT_NAME}`
echo ${WORK_DIR}
cd ${WORK_DIR}

### 2. args check
if [ $# -eq 1 ]
 then
        SRC_FILE=$1
 else
        echo "the args is wrong,you should file name whth path like '/res/file.log'"
        exit 1;
fi

linenum=`wc -l $1 | awk '{print $1}'`
n1=1
file=1
while [ $n1 -lt $linenum ]
do   
        n2=`expr $n1 + 999999`
        // 这边使用了 if 判断是不是第一次分割。在分割带有title的文件时,使得每一行都能有一个title
        if [ $file -eq 1 ]
         then
                sed -n "${n1},${n2}p" $SRC_FILE >> ${WORK_DIR}/tmp_data/file_$file.log
         else
                head -1 $SRC_FILE > ${WORK_DIR}/tmp_data/file_$file.log
                sed -n "${n1},${n2}p" $SRC_FILE >> ${WORK_DIR}/tmp_data/file_$file.log
        fi
        n1=`expr $n2 + 1`
        file=`expr $file + 1`
done

猜你在找的Bash相关文章