自己写的文件拆分
filerowcount=0
for filename in `ls -l ${vfile}| awk '{print $9}'`
do
newfilenameleft=${filename%.*}
filerowcount=`cat -n $filename |wc -l`
temp=`expr $filerowcount \% 500000`
echo "tmp=${temp}"
temp1=`expr $filerowcount / 500000`
if [ $temp -gt 0 ] ; then
temp1=`expr $temp1 + 1`
fi
file_seq=1;
hrow=500000;
echo "temp1=${temp1}"
while [ $file_seq -le $temp1 ]
do
newfilenameleft="${newfilenameleft}_${file_seq}.unl"
if [ `expr $filerowcount-$hrow` -ge $hrow ]; then
head -$hrow | tail -500000 >$newfilenameleft
else
echo "---xx"
if [ $filerowcount -le $hrow ] ; then
n=$filerowcount
else
n=`expr $filerowcount-$hrow`
fi
echo "n=${n}, hrow=${hrow}"
head -$hrow | tail -$n >$newfilenameleft #这行有问题
fi
file_seq=`expr $file_seq+1`
hrow=`expr $hrow+500000`
done
done
这实际上等同于:
split -l 500000 GXalluserinfo_V_20120704_101_000022.unl GXalluserinfo_V_20120704_101_000022.unl.
实例-----------------------------
FTPHOST="130.51.10.99"
USERNAME="xxxxx"
PASSWORD="xxxxxxx"
ld=$(perl -e "use POSIX qw(strftime); print strftime '%Y%m%d' , localtime( time()-3600*24*1) ")
echo $ld
vfile="GXalluserinfo_V_${ld}_*.unl"
bfile="GXyestacctbal_V_${ld}_*.unl"
localpath="/product1/port/bin/ocs_subscriber_import/local"
localbackpath="/product1/port/bin/ocs_subscriber_import/back/"
curpath="/product1/port/bin/ocs_subscriber_import/"
#取GXyestacctbal_V
bal_v_backpath="/data/jingfen/GXyestacctbal/backup/"
bal_v_path="/data/jingfen/"
#bal_v_backpath="/product1/interf/ocs_subscriber_import/src/back/"
#bal_v_path="/product1/interf/ocs_subscriber_import/src/back/"
ftp -i -n $FTPHOST<<FTPIT
user $USERNAME $PASSWORD
lcd ${localpath}
bin
prom
cd ${bal_v_path}
mget ${bfile}
quit
FTPIT
#处理取GXyestacctbal_V
echo "---------------------------"
cd $localpath
for filename in `ls -l ${bfile}| awk '{print $9}'`
do
cd $curpath
./ocs_subscriber_import GXyestacctbal $filename
echo ""
ftp -i -n $FTPHOST<<FTPIT2
user $USERNAME $PASSWORD
bin
prom
cd $bal_v_path
rename $filename "${bal_v_backpath}${filename}.bak"
quit
FTPIT2
done
echo ""
echo ""
echo ""
#取GXalluserinfo_V
info_v_backpath="/data/jingfen/GXalluserinfo_V/backup/"
info_v_path="/data/jingfen/"
#info_v_backpath="/product1/interf/ocs_subscriber_import/src/back/"
#info_v_path="/product1/interf/ocs_subscriber_import/src/back/"
ftp -i -n $FTPHOST<<FTPIT3
user $USERNAME $PASSWORD
lcd ${localpath}
bin
prom
cd ${info_v_path}
mget ${vfile}
quit
FTPIT3
#处理GXalluserinfo_V
cd ${localpath}
for filename in `ls -l ${vfile}| awk '{print $9}'`
do
split -l 500000 ${filename} ${filename}.
mv ${filename} ${localbackpath}
ftp -i -n $FTPHOST<<FTPIT4
user $USERNAME $PASSWORD
bin
prom
cd ${info_v_path}
rename $filename "${bal_v_backpath}${filename}.bak"
quit
FTPIT4
done
cd ${localpath}
for filename in `ls -l * | awk '{print $9}'`
do
cd ${curpath}
nohup ./ocs_subscriber_import GXalluserinfo_V $filename >nohup.out &
done