如何从顶部以外的不同行中删除标题 - MATLAB
问题描述:
我有一个包含多个标题的文本文件。 它看起来像这样:如何从顶部以外的不同行中删除标题 - MATLAB
Date,time,*10ms,%%,%%,%%,%%,%%,%%,%%,%%,%%,%%,DETAILS.txt;D;%%;10 11/08/19,13:19:28,03,446,0,545.75,0,6,0,0,0,14,0 11/08/19,13:19:29,05,446,0,549.25,1.9,6,102,1,0,0,0 11/08/19,13:19:30,07,446,0,549.5,1.9,6,102,1,0,0,0 11/08/19,13:19:31,09,446,0,548.75,1.9,6,102,1,0,0,0 . . . . Date,time,*10ms,%%,%%,%%,%%,%%,%%,%%,%%,%%,%%,DETAILS.txt;D;%%;10 11/08/19,13:19:28,03,446,0,545.75,0,6,0,0,0,14,0 11/08/19,13:19:29,05,446,0,549.25,1.9,6,102,1,0,0,0 11/08/19,13:19:30,07,446,0,549.5,1.9,6,102,1,0,0,0 11/08/19,13:19:31,09,446,0,548.75,1.9,6,102,1,0,0,0 . .
等等...
我想编写删除这些头,行和数据的存储休息到一个新文件中的代码。
任何人都可以帮忙吗?
亲切的问候,
塔玛拉
答
它看起来像所有的头都是一样的,我想你的意思是:日期,时间,10ms的* %%,%%,%%,%%, %%,%%,%%,%%,%%,%%,DETAILS.txt; D; %%; 10
而且您希望使用MATLAB,如果是这种情况,您必须打开文件,textscan为那一行,然后fgetl删除它。
当线条总是相同时,不需要正则表达式或类似的东西。
答
readID = fopen('headers.txt', 'r');
writeID = fopen('no_headers.txt', 'w');
while feof(readID) == 0
currLine = fgetl(readID);
if isempty(strfind(currLine, 'Date'))
fprintf(writeID, '%s\n', currLine);
end
end
fclose(readID);
fclose(writeID);
安装cygwin,做'grep的-v '^日期' 输入> output' :-) –
使用'regexp'。它根据模式进行各种文本操作。 – Phonon