话单文件/jssm/acc/data/DataSend/bak/smc/*的格式:
342716595,01,0,13218202500,61111,10011,10011,CTYH,2,10,0,0,0,0513,20050817160250,20050817160250,0,2,01,H,2,1,,0,,,0,G40Z08170074,*1*4,,,10011,0,10004,000
342716747,01,0,13218202523,61111,10011,10011,CTYH,2,10,0,0,0,0513,20050817160255,20050817160255,0,2,01,H,2,1,,0,,,0,G40Z08170074,*1*4,,,10011,0,10004,000
...
文件10011rerate.txt
13218202500
13218202545
...
功能:我要把符合switch_id == 'H'和call_type == "01"等等的条件以及还要符合msisdn号码在这个10011rerate.txt文件内的所有话单挑出来。
现在我是做到了,但是不知道如何删除这些符合条件的话单,因为我是分了两步来做的。
我的脚本代码如下
cd /jssm/acc/data/DataSend/bak/smc
for fname in *
do
cat $fname | awk '{n=split($0,a,"," ;
call_type = a[2];
msisdn = a[4];
service_code = a[7];
apply_time = a[15];
finish_time = a[16];
switch_id = a[20];
#挑出符合条件的行
if(switch_id == "H" && call_type == "01" && service_code == "10011" && apply_time >= "20050817000000" && apply_time <= "20050817235959"
{
if(finish_time <= "20050818162000"
{
print $0; #输出符合条件的话单
}
}
}'>>/jssm/acc/kewf/filter10011/smc_out.txt
done
#查找上面得出的话单中号码存在于10011rerate.txt文件中的所有话单,并打印出这些话单
while read userphone
do
grep ","$userphone"," /jssm/acc/kewf/filter10011/smc_out.txt >> /jssm/acc/kewf/filter10011/smc_filter10011.txt
done < /jssm/acc/kewf/filter10011/10011rerate.txt
能不能不用c程序,纯用sh脚本来完成它呢?
麻烦各个大侠帮一下我,小弟感激不尽。 |