How can i replace a line form a text ?

4 visualizzazioni (ultimi 30 giorni)
I have the following text file i want to replace all the line that contains this pattern X = 259.557 mm, Y = 563.173 mm, Z = -104.284 mm,
with a new line that contains the existing numbers added by a certain value.

Risposta accettata

Stephen23
Stephen23 il 21 Ago 2018
Modificato: Stephen23 il 21 Ago 2018
You can easily match those lines using a regular expression. Something like this:
fmt = sprintf('\\s*%c\\s*=\\s*(\\d+\\.\\d+)\\s*mm,','XYZ')
fmt = sprintf('^%s\\s*$',fmt)
str = fileread('values.txt');
spl = regexp(str,'[\n\r]+','split');
tmp = regexp(spl,fmt,'tokens','once');
idx = find(~cellfun('isempty',tmp));
for k = reshape(idx,1,[])
vec = str2double(tmp{k}) + 2; % add two as example data manipulation.
spl{k} = sprintf(' X = %.3f, Y = %.3f, Z = %.3f,',vec);
end
fid = fopen('newfile.txt','wt');
fprintf(fid,'%s\n',spl{:});
fclose(fid);
  5 Commenti
Stephen23
Stephen23 il 21 Ago 2018
Modificato: Stephen23 il 21 Ago 2018
Change the first line to this:
fmt = sprintf('\\s*%c\\s*=\\s*([-+]?\\d+\\.\\d+)\\s*mm,','XYZ')
^^^^^ optional +/- sign
Theodor Al Saify
Theodor Al Saify il 21 Ago 2018
Thank you it work perfectly . :D

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by