免费注册 查看新帖 |

Chinaunix

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

超长文本的字串替换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-09 21:30 |只看该作者 |倒序浏览
文本就一行  有2W多个字符  超出AWK上限了
有何好办法 用脚本的方法替换字串?

论坛徽章:
0
2 [报告]
发表于 2009-11-09 21:44 |只看该作者
perl

论坛徽章:
0
3 [报告]
发表于 2009-11-09 22:03 |只看该作者
awk 有上限??

awk 处理的上限只和内存大小有关吧

论坛徽章:
0
4 [报告]
发表于 2009-11-09 22:20 |只看该作者
啥版本的awk呀
我的完全没有问题阿
lululau@localhost: ~ $ ruby -e '
20000.times {|x|print "a"}' | gawk '{gsub(/./,"&&")}1' | wc -c
   40001
lululau@localhost: ~ $ ruby -e '
20000.times {|x|print "a"}' | awk '{gsub(/./,"&&")}1' | wc -c
   40001

论坛徽章:
0
5 [报告]
发表于 2009-11-09 23:11 |只看该作者
想过dd + sed,但不能确定会不会:

被替换的字符串从中间被切割而导致漏了呢?

请高手指示一二

论坛徽章:
0
6 [报告]
发表于 2009-11-11 00:04 |只看该作者

回复 #4 lululau 的帖子

因为是行处理,有可能会出现这样的问题的,和内存有关,试了下内存不够会显示
awk: cmd. line:1: (FILENAME=data FNR=1) fatal: set_record: databuf: can't allocate 1073741824 bytes of memory (Cannot allocate memory)
sed 也一样
我73xM的空余,处理了840M的文件

论坛徽章:
0
7 [报告]
发表于 2009-11-11 04:03 |只看该作者
perl的read
你要做什么呢

  1. development:~# cat read.pl
  2. #!/usr/bin/perl

  3. use strict;
  4. use warnings;

  5. my $string;

  6. while((read DATA,$string,10) != 0){
  7.     print "$string\n\n";
  8. }

  9. __DATA__
  10. dhsafhaklfdj;lasfjlkafjlkasd;falkdfhlkasdfhlsfhlFRLKfhlsFHLfhsDFHlfjlSFJLsfdjSJLKSjJfSDFJdf;sF;JKSfjlsfJKLF
复制代码


  1. development:~# ./read.pl
  2. dhsafhaklf

  3. dj;lasfjlk

  4. afjlkasd;f

  5. alkdfhlkas

  6. dfhlsfhlFR

  7. LKfhlsFHLf

  8. hsDFHlfjlS

  9. FJLsfdjSJL

  10. KSjJfSDFJd

  11. f;sF;JKSfj

  12. lsfJKLF

复制代码

论坛徽章:
0
8 [报告]
发表于 2009-11-11 05:21 |只看该作者
发重复了

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
9 [报告]
发表于 2009-11-11 08:58 |只看该作者
装个gawk吧,就没这问题了

论坛徽章:
0
10 [报告]
发表于 2009-11-11 23:49 |只看该作者
帮顶,主要想引申一下:
如果一文件只有一行,而且文件大于内存,这时sed,awk都会处理不了,只能分割,但分割可能存在将要替换的字符串割开,怎么处理?

想法有些bt

想到一个:先分割处理,合并后重新分割,再对先前分割处单独处理
再合并
有更好的方法不?

[ 本帖最后由 haimming 于 2009-11-12 00:02 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP