免费注册 查看新帖 |

Chinaunix

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

如果高效替换一个200M文本中的大概300个字段?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-09 23:41 |只看该作者 |倒序浏览
             

  很久很久没来了。。这次终于又遇到棘手的问题请教UC的高手了~

 要处理一个大概200M的文本,要替换其中大概300个字段,

   将其改为全部小写字母,字段已经在另外一个文本中存储下来,用

 什么样的方式会比较迅速?? 我比较笨,采取了下面的方法:

  foreach str (`cat list_statement`)
     set lowcased_str = `echo "${list_str}" | tr 'A-Z' 'a-z' `
     sed -e 's/'$str'/'$lowcased_str'/g' $1 > $1.tmp
     mv $1.tmp $1
     end

   但是这样做速度奇慢,显得巨愚蠢。。。     

  请UC高手指教~~~ 

论坛徽章:
0
2 [报告]
发表于 2004-09-09 23:47 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

用awk的lowwer()函数

论坛徽章:
0
3 [报告]
发表于 2004-09-10 09:29 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

  呵呵,bjgirl,现在的问题不是大小写转换,而是每做一次
替换,就得存一次盘(200M呐!!),替换200多个,就得存200多次。。这样速度就上不去了。。。

  我记得VI好像也可以在shell里跟SED嵌入应用,这个能不能
实现??

论坛徽章:
0
4 [报告]
发表于 2004-09-10 09:30 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

  呵呵,bjgirl,现在的问题不是大小写转换,而是每做一次
替换,就得存一次盘(200M呐!!),替换200多个,就得存200多次。。这样速度就上不去了。。。

  我记得VI好像也可以在shell里跟SED嵌入应用,这个能不能
实现??

论坛徽章:
0
5 [报告]
发表于 2004-09-10 09:41 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

可以考虑用perl,perl处理数据的效率是蛮高的

论坛徽章:
0
6 [报告]
发表于 2004-09-10 10:11 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

bjgirl
  perl 不是很会阿。。。 

  不是,我觉得问题的关键是在,如何把文件读到内存里,然后完成
所有的替换操作以后再存盘,而不是每次读一次,操作一次,存盘一次然后再来第二次。。。。

   所以我觉得可能应该调用某个编辑工具,VI什么的来操作。。

   

论坛徽章:
0
7 [报告]
发表于 2004-09-10 11:44 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

诶。。笨啦。。刚才发现,sed其实支持批量操作的。。。
$ cat sed_cmd
 s/old_str1/new_str1/g
 s/old_str2/new_str2/g
 s/old_str3/new_str3/g

$ sed -f sed_cmd file1 > file2

... 这样就可以一次完成所有替换了。。。

 

论坛徽章:
0
8 [报告]
发表于 2004-09-10 12:41 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

晕就一个字

论坛徽章:
0
9 [报告]
发表于 2004-09-11 12:13 |只看该作者

如果高效替换一个200M文本中的大概300个字段??

这时候恐怕只能用C语言.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP