regexp and string rearrange in text file

2 visualizaciones (últimos 30 días)
Rashmil Dahanayake
Rashmil Dahanayake el 16 de Jul. de 2014
Comentada: Rashmil Dahanayake el 16 de Jul. de 2014
I have a .txt file which has about 350 lines. The content is the .txt file is in following format
Open loop test -19-06-2014
Current Injection 2 -18-06-2014
Parameter sweep -17-06-2014
Controlled input -16-06-2014
Open loop test 2 -14-06-2014
I need to take the date to the beginning of each line and change the format to yyyy/mm/dd
ie in following format
2014/06/19 Open loop test
2014/06/18 Current Injection 2
Following is the code I have so far
%open file
fid =fopen('lsit2.txt');
C=textscan(fid,'%s','delimiter','\n');
% search for date string and updating the format
for k=1:size(C{1,1},1) % repeat for each line
str=C{1,1}{1};
date = regexp(str, '(\d+)-(\d+)-(\d+)', 'tokens');
newdate_format= sprintf('%s/%s/%s',date{1,1}{3},date{1,1}{2},date{1,1}{1});
end
Could someone help me to modify the code further to
1) To change the position of date
2) save the updated values to the .txt file

Respuesta aceptada

Alfonso Nieto-Castanon
Alfonso Nieto-Castanon el 16 de Jul. de 2014
Editada: Alfonso Nieto-Castanon el 16 de Jul. de 2014
something along these lines:
% reads file into cell array
lines = textread('lsit2.txt','%s','delimiter','\n','whitespace','');
% changes format
lines = regexprep(lines, '(.*)-(\d+)-(\d+)-(\d+)','$4/$3/$2 $1');
% saves new file
f = fopen('newfile.txt','wt');
fprintf(f,'%s\n',lines{:});
fclose(f);

Más respuestas (0)

Categorías

Más información sobre Low-Level File I/O en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by