#!/bin/bash
#------------------------------------------------------
# File Name: split_file.sh
# Author: wanggy
# mail: wgy-email@163.com
# Created Time: 2013年06月26日 星期三 13时50分09秒
# note: www.jb200.com
# 1:calling_file 为主叫文件名称,called_file 为被叫文件名称
# 2:calling_file 会被切换成$num行的多个小文件
# 3:拼接成主叫|被叫|内容 被叫要求循环使用。
#-----------------------------------------------------
calling_file=calling
called_file=called
#切割的条件:行
line=5000
content="hello"
#将主被叫文件转换成unix 格式
dos2unix $calling_file
dos2unix $called_file
split -l$line $calling_file calling_split_
#取被叫号码,添加至主叫文件时循环判断使用
called_num=`wc -l $called_file | awk '{print$1}'`
for sub_file in `ls calling_split_*`
#for sub_file in `ls test`
do
echo $sub_file
file_num=`wc -l $sub_file|awk '{print$1}'`
for ((i=1,j=1;i<=file_num;i++));
do
echo "正在处理${sub_file}文件第$i行,$called_file文件第$j行"
#取called第$j行的内容,添加至calling对应的$i行后面。格式:calling的$i行|called的$j行|内容
called_text=`awk NR==$j called`
sed -i ${i}'s/$/|'${called_text}'|'$content'/' $sub_file
#被叫行号手动加1
j=`expr $j + 1`
if [ "$j" -gt "$called_num" ];then
echo "被叫号码轮循完毕, 重置为第1行,继续...."
j=1
fi
done
done
exit 0