中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 20:40
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论]请教P处理文本的效率问题
可打印版本  627 / 0
第1楼 genteman 发表于 2008-09-24 09:39
初级用户 发帖 43 积分 90
[讨论]请教P处理文本的效率问题
要处理的文本内容剪辑如下:
<hgsdp:msisdn=8615082687528,loc;
HLR SUBSCRIBER DATA

SUBSCRIBER IDENTITY
MSISDN IMSI STATE AUTHD
8615082687528 460023826698378 CONNECTED AVAILABLE

NAM
0

LOCATION DATA
VLR ADDRESS MSRN MSC NUMBER LMSID
4-8613744818 8613744818

SGSN NUMBER
4-8613741803

END
<hgsdp:msisdn=8613980325588,loc;
HLR SUBSCRIBER DATA

SUBSCRIBER IDENTITY
MSISDN IMSI STATE AUTHD
8613980325588 460000324808588 CONNECTED AVAILABLE

NAM
0

LOCATION DATA
VLR ADDRESS MSRN MSC NUMBER LMSID
4-99292370000 99292370000

SGSN NUMBER
4-8613746991
MS PURGED IN SGSN

END
<hgsdp:msisdn=8615884933063,loc;
HLR SUBSCRIBER DATA

SUBSCRIBER IDENTITY
MSISDN IMSI STATE AUTHD
8615884933063 460028825794364 CONNECTED AVAILABLE

NAM
0

LOCATION DATA
VLR ADDRESS MSRN MSC NUMBER LMSID
4-8613741249 8613741249
MS PURGED IN VLR

SGSN NUMBER
4-8613742297

END
<hgsdp:msisdn=8613608272886,loc;
HLR SUBSCRIBER DATA

SUBSCRIBER IDENTITY
MSISDN IMSI STATE AUTHD
8613608272886 460008480450049 CONNECTED AVAILABLE

NAM
0

LOCATION DATA
VLR ADDRESS MSRN MSC NUMBER LMSID
4-8613744818 8613744818

SGSN NUMBER
UNKNOWN

END
<hgsdp:msisdn=8613882685885,loc;
HLR SUBSCRIBER DATA

SUBSCRIBER IDENTITY
MSISDN IMSI STATE AUTHD
8613882685885 460028825960924 CONNECTED AVAILABLE

NAM
1

LOCATION DATA
VLR ADDRESS MSRN MSC NUMBER LMSID
4-8613740848 8613740848

END

我要选出含有MS PURGED IN SGSN、MS PURGED IN VLR、UNKNOWN或无SGSN NUMBER字符串对应的<hgsdp开头的这行。

我的代码如下:



现在的问题是运行效率特别低,对一个大小超过10M的文件处理需要至少24小时的执行时间,如果是在UNIX下用sed来处理的话只需要几秒钟就能搞定。

上面的代码问题是因为每次循环都要进行多次判断,所以造成执行效率低下,但我实在想不出有更好的算法。

请教大家有没有优化的代码?
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023