用matlab实现大文本文件指定字符串的查找与替换

王朝百态·作者佚名  2016-11-24
窄屏简体版  字體: |||超大  

实现替换时,有两种情况,一是原来的那行完全不要,另一种是换掉那行的一部分数据。

替换之后输出的主要办法有两个:第一种方法是采用覆盖的办法(适用于数据量特别大,全部读进来内存不够用的情况),第二种方法是把所有数据读取出来然后写成新的文件(数据量小的时候特别方便)

在matlab中文论坛,大家常用的方法都是第二种方法,即先用fopen全部读入,修改完成后,再写到一个新文件。对于大文件,(大于1m以上的文件,或者上g的文件),读整个文件,再写整个文件,比较慢,费时。

本经验主要介绍第一种方法的使用。

例如:对于下文的字符,要求对指定字符*section_shell下面的指定数字id(加粗的1)的下一行厚度进行整行修改(修改加粗的数字0.8)。文件名为test.txt

$hwcolor comp11 3

geban6

11 8 5

*section_shell

$hmname prop1tube1.5.0

1 2 0.8333 5 0.0

0.8 0.8 0.8 0.8

*section_shell

$hmname prop3gaban1

3 2 0.8333 5 0.0

0.4 0.4 0.4 0.4

工具/原料

matlab

方法/步骤

1:需要读取修改源文件如下图

2:清空空间,输入文件路径,以及id号,和厚度。

clc

clear

close all

filename='d:\thinkpad\desktop\test.txt';

partid=1;%要修改的id号

newthickness=0.9;%输入修改厚度

3:由于文件中每个字符加上空格是10个字符,所以输入值必须保证10字符,才能与test.txt进行精确查找。也得判断partid,newthickness是几位。

strpartid=num2str(partid);

strnewtemp=num2str(newthickness);

lenstrpid=length(strpartid);

lenstrtid=length(strnewtemp);

for jk=1:10-lenstrpid

strpartid=[' ',strpartid];%添加空格,保证只占用10个字符

end

for jl=1:10-lenstrtid

strnewtemp=[' ',strnewtemp];%添加空格,保证只占用10个字符

end

lenstrpid=length(strpartid);

lenstrtid=length(strnewtemp);

4:查找替换主文件。主要使用fgetl,strfind,strcmp,fseek,已经fprintf写函数。用fprintf函数将strnew替换文件中的” 0.8 0.8 0.8 0.8 “。

程序如下:

if lenstrpid==10&&lenstrtid==10

strnew=[strnewtemp,strnewtemp,strnewtemp,strnewtemp];%生成要替换的厚度

[fid,errmsg]=fopen(filename,'r+');

if fid<0

disp(errmsg);

disp('不能打开文件');

else

flag=1;

while(~feof(fid))%|flag

tline=fgetl(fid);

if ischar(tline);

tline=upper(tline); if ~isempty(strfind(tline, '*section_shell')); %字符串匹配

for k=1:2;%将光标移动到partid行

tpart=fgetl(fid);

end

if strcmp(strpartid,tpart(1:10));%是否是指定partid

fseek(fid,0,'cof'); %那么找到把光标移到这个字符串前

fprintf(fid,'%s',strnew); %

flag=0;

break;

end

end

end

end

end

fclose(fid);

if flag

disp('k文件中没有厚度或者指定partid');

else

disp('修改完成');

end

else

disp('值占用空间不是10个字节,检查程序')

end

5:运行结束后,结果如下图:

注意事项

本文使用matlar2010b调试完成,不保证其他版本能完美运行

本文使用的系统是windows,如果是linux系统,请对应修改路径等其他事项

如果帮到你,请点赞,欢迎讨论。

希望本文【matlab 字符串替换】用matlab实现大文本文件指定字符串的查找与替换能帮到你。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航