shell切割日志脚本

本文介绍了一种利用Bash脚本和split命令高效处理大型文本文件的方法。通过示例展示了如何将文件按行或按大小分割成多个小文件,并提供了脚本的具体实现细节。
 1 #!/bin/bash
 2 
 3 set -e
 4 
 5 source /etc/bashrc
 6 
 7 cd `dirname $0`
 8 
 9 linenum=`wc -l userinfolist.txt | awk '{print $1}'`
10 
11 n1=1
12 
13 file=1
14 
15 while [ $n1 -lt $linenum ]
16 do
17   n2=`expr $n1 + 9999`
18   sed -n "${n1}, ${n2}p" userinfolist.txt>/home/jideyue/logs/userdir/file_$file.log
19   n1=`expr $n2 + 1`
20   file=`expr $file + 1`
21 done

set -n "1,1000p" 表示从第1行到1000行。按照上面的脚本表示 每10000行 一个文件。

另外还有个split命令可以快速切割

split [-bl] file [prefix]

参数说明:
-b, --bytes=SIZE:对file进行切分,每个小文件大小为SIZE。可以指定单位b,k,m。
-l, --lines=NUMBER:对file进行切分,每个文件有NUMBER行。

prefix:分割后产生的文件名前缀。

例如:

按照行数:

split -l 5000 test.2012-08-16_17

生成xaa,xab,xac三个文件。
wc -l 看到三个文件行数如下:
5000 xaa
5000 xab
2081 xac

12081 总计

按照文件大小

split -b 600k test.2012-08-16_17

生成xaa,xab两个文件
ls -lh 看到 两个文件大小如下:
600K xaa

554K xab

指定文件名:

split -b 500k test.2012-08-16_17 example

ls -lh 看到文件信息如下:
500K exampleaa
500K exampleab
154K exampleac

 

转载于:https://www.cnblogs.com/gide/p/5475535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值