免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3557 | 回复: 15
打印 上一主题 下一主题

怎样用perl实现附件中的txt格式的转变 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-05 20:23 |只看该作者 |倒序浏览
我想把附件中‘导入前格式.txt’文本中的格式变成‘转换后格式.txt’中的格式,用perl怎么实现,那位大侠知道啊,急急!!!!!!!!!!!! 导入前的格式.zip (1.66 KB, 下载次数: 28) 转换后格式.zip (743 Bytes, 下载次数: 35)

论坛徽章:
0
2 [报告]
发表于 2010-09-05 20:50 |只看该作者
本帖最后由 paktc 于 2010-09-05 21:25 编辑

楼主不善良啊,  两个文本就分两个压缩包,下载的人都要下两次=.=

我以为很简单差点轻易放代码上来了,原来有些数据是重复的

AK0050=250
AK0051=225
AK0052=0 (CONNECTION_SETUP_BSSAP_BEGIN)
AK0051=354
AK0052=0 (CONNECTION_SETUP_BSSAP_BEGIN)
AK0051=138
AK0052=0 (CONNECTION_SETUP_BSSAP_BEGIN)
AK0053=0


而结果中是不重复的。

然后发现源.txt 是内容是分段的,对比了一下结果.txt 应该是取最后一次出现的值
楼主却什么也没告诉我们呀……

=.=陷阱挺多的,鉴定完毕……

论坛徽章:
0
3 [报告]
发表于 2010-09-05 21:52 |只看该作者
经过了观察再观察,对比再对比,最后脚本如下

  1. #!/usr/bin/perl
  2. open READ,"<src.txt" or warn "File not exist.";
  3. open WRITE,">dest.txt";

  4. my ($stra,$strb);
  5. foreach (<READ>) {
  6.     if (/(.*)=(.*)/) {
  7.        $stra.="$1\t";
  8.        $strb.="$2\t";
  9.     }
  10.     if (/--------/) {undef $stra; undef $strb;}
  11. }
  12. print WRITE "$stra\n$strb\n";
  13. <STDIN>;
复制代码
在winxp写的。 第一行#! 刻意加上的。

论坛徽章:
0
4 [报告]
发表于 2010-09-05 22:12 |只看该作者
回复你的私信来啦,

后面有个 <STDIN>;  你需要按键退出。
看看是否生成了一个 dest.txt  结果在那里面

论坛徽章:
0
5 [报告]
发表于 2010-09-05 22:17 |只看该作者
paktc (paktc)
真是太感谢了,功能实现了,正是太佩服你了,我初学PERL,太谢谢你了。另外我不是只要最后一次出现的值,我是要把竖的变为横的,全部都要,另外结果能直接导入到sql server吗

论坛徽章:
0
6 [报告]
发表于 2010-09-05 22:26 |只看该作者
本帖最后由 paktc 于 2010-09-05 22:30 编辑

回复 5# wxusheng


   我也在学,sql 我不懂的,我是因为个人喜好学的。 看其他人回帖吧。

对了楼主,全部的要的话,根据你给的那份结果.txt 来对比,是有冲突的哦。

源.txt 中有 不同段落的信息 用------------------ 隔开,
而你给的 结果.txt 提取的信息,是从最后一个 ------------- 分割,下面的信息中提取的,
"---------------------"之前的信息全部避开

论坛徽章:
0
7 [报告]
发表于 2010-09-05 23:36 |只看该作者
我重新把文件处理了一下,附件是原始文件和想要得到的文件,请帮忙看一下。

论坛徽章:
0
8 [报告]
发表于 2010-09-05 23:37 |只看该作者
转换前后的txt.zip (1.6 KB, 下载次数: 26) 附件如下

求职 : 技术支持/维
论坛徽章:
0
9 [报告]
发表于 2010-09-06 08:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2010-09-06 13:50 |只看该作者
谢谢楼上,运行代码会报错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP