linux切大文件为小文件,linux下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万行小文件

#!/bin/bash

bigfile="1.txt"

split -l 1000000 $bigfile text

currdir=1

for smallfile in `ls | grep "text*"`

do

linenum=`wc -l $smallfile | awk '{print $1}'`

n1=1

file=1

savedir="$smallfile$currdir"

if [ ! -d "$savedir" ]

then

mkdir $savedir

fi

while [ $n1 -lt $linenum ]

do

n2=`expr $n1 + 9999`

sed -n "${n1},${n2}p" $smallfile > $savedir/text$file.txt

n1=`expr $n2 + 1`

file=`expr $file + 1`

done

currdir=`expr $currdir + 1`

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值