shell切割日志脚本
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