how to modify a text file replacing an existing string with an user-defined string
    19 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Hugo
 el 13 de Mzo. de 2013
  
    
    
    
    
    Comentada: Narayanan Krishnamurthi
 el 29 de Abr. de 2022
            Hello,
I want to open an existing text file, modify it adding a string that I define and save the new file. The new string shall replace a string on the existing file, so I must identify it.
Any help appreciated, regards, Hugo
0 comentarios
Respuesta aceptada
  Jos (10584)
      
      
 el 11 de Dic. de 2013
        fid = fopen('infile.txt','rt') ;
X = fread(fid) ;
fclose(fid) ;
X = char(X.') ;
% replace string S1 with string S2
Y = strrep(X, S1, S2) ;
fid2 = fopen('outfile.txt','wt') ;
fwrite(fid2,Y) ;
fclose (fid2) ;
1 comentario
Más respuestas (2)
  Walter Roberson
      
      
 el 13 de Mzo. de 2013
        You cannot do this unless the replacement string is exactly the same length as the original string. Even then it is not recommended. Instead, create an output file, copy everything from the input until you reach the place you want to modify, write the new string without copying the old string, and then copy the rest of the old file to the new one. You can rename the new file to the old name if you need to afterwards.
2 comentarios
  Andreas Justin
      
 el 11 de Dic. de 2013
        
      Editada: Andreas Justin
      
 el 11 de Dic. de 2013
  
      Something like this?
%%Preparing
fid = fopen(fullfile('D:\','test.txt'),'w');
fprintf(fid,['function edit(str)',char(13), 'if nargin < 1 || isempty(str)',char(13),...
    'str='''';',char(13),'end',char(13), 'rmpath(matlabroot);',char(13),...
    'edit(str);',char(13), 'addpath(matlabroot);',char(13),'Matlab_extendEditorFunctionality(true);']);
fclose(fid);
clear fid
%%Reading
fid = fopen('D:\test.txt','r');
f = textscan(fid,'%s','Delimiter','\n');
txt = f{:};
%%manipulation
txt = regexprep(txt,'^function','\<FUNCTION\>')
txt = regexprep(txt,'path','\<PATH\>')
txt = regexprep(txt,'(.*)','$1\n');
txt = [txt{:}];
fclose(fid);
%%writing
fid = fopen('D:\test.txt','w');
fprintf(fid,txt)
fclose(fid);
1 comentario
  Marco A. Acevedo Z.
 el 17 de Feb. de 2022
				Hello, this solution misses the tabulation spaces. That might be inconvenient for doing search and replace of XML files. On those specific cases use:
new_filename = ['new_' str2];
S = fileread(str2);
S = regexprep(S, 'µm', 'micron');
fid = fopen(new_filename, 'w');
fwrite(fid, S);
fclose(fid);
Cheers,
Ver también
Categorías
				Más información sobre Variables en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






