Chinaunix
标题:
超长文本的字串替换问题
[打印本页]
作者:
Neo98
时间:
2009-11-09 21:30
标题:
超长文本的字串替换问题
文本就一行 有2W多个字符 超出AWK上限了
有何好办法 用脚本的方法替换字串?
作者:
zhanglipeng
时间:
2009-11-09 21:44
perl
作者:
angle4
时间:
2009-11-09 22:03
awk 有上限??
awk 处理的上限只和内存大小有关吧
作者:
lululau
时间:
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
作者:
haimming
时间:
2009-11-09 23:11
想过dd + sed,但不能确定会不会:
被替换的字符串从中间被切割而导致漏了呢?
请高手指示一二
作者:
haimming
时间:
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的文件
作者:
cxfcxf
时间:
2009-11-11 04:03
perl的read
你要做什么呢
development:~# cat read.pl
#!/usr/bin/perl
use strict;
use warnings;
my $string;
while((read DATA,$string,10) != 0){
print "$string\n\n";
}
__DATA__
dhsafhaklfdj;lasfjlkafjlkasd;falkdfhlkasdfhlsfhlFRLKfhlsFHLfhsDFHlfjlSFJLsfdjSJLKSjJfSDFJdf;sF;JKSfjlsfJKLF
复制代码
development:~# ./read.pl
dhsafhaklf
dj;lasfjlk
afjlkasd;f
alkdfhlkas
dfhlsfhlFR
LKfhlsFHLf
hsDFHlfjlS
FJLsfdjSJL
KSjJfSDFJd
f;sF;JKSfj
lsfJKLF
复制代码
作者:
cxfcxf
时间:
2009-11-11 05:21
发重复了
作者:
Minsic
时间:
2009-11-11 08:58
装个gawk吧,就没这问题了
作者:
haimming
时间:
2009-11-11 23:49
帮顶,主要想引申一下:
如果一文件只有一行,而且文件大于内存,这时sed,awk都会处理不了,只能分割,但分割可能存在将要替换的字符串割开,怎么处理?
想法有些bt
想到一个:先分割处理,合并后重新分割,再对先前分割处单独处理
再合并
有更好的方法不?
[
本帖最后由 haimming 于 2009-11-12 00:02 编辑
]
作者:
Neo98
时间:
2009-11-16 22:08
多谢各位。服务器权限有限 非管理员 安装新程序没办法了
看了下服务器支持perl 小弟不熟 帮指个思路
文本就一行 字符很多 都是程序产生的XML 要替换其中的<count>xx</count> 为固定内容字串
作者:
haimming
时间:
2009-11-16 22:15
标题:
回复 #11 Neo98 的帖子
2w多字符应该就50k左右的文件,
awk,sed什么版本?
作者:
ttcn_cu
时间:
2009-11-16 22:36
XML 一行和多行含义完全一样,干嘛弄成这么尴尬的文件??
找到你的输入源,让他们换换习惯,不然说不定以后还要吃苦...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2