【问题标题】:Deleting odd numbered lines from a text file using MATLAB?使用MATLAB从文本文件中删除奇数行?
【发布时间】:2015-09-05 08:03:27
【问题描述】:

我有一个非常大的文本文件,其中包含:

内容

无意义的内容

内容

无意义的内容

....

我仍然希望“内容”之间有空行,所以我只希望“无意义的内容”行是空白的。理想情况下,我希望拥有:

内容

内容

内容

内容之间有一个完整的空行。

所以我想使用 MATLAB 删除偶数行。我不能使用 Bash。我设置了以下代码:

fid = fopen('file.txt');

while ~feof(fid);
fileline=fgets(fid); 

if mod(linenumber,2) == 0
   delete line
end  

end
fclose all;

但是,我真的不知道行号的语法以及原则上这段代码是否正确。任何批评或更好的方法来做到这一点?很遗憾,我不能使用 Bash 脚本。

【问题讨论】:

  • 一次打开​​2个文件;一个读,一个写。一次读两行,只写第一行。仅供参考,就地修改文件相当困难。
  • 这还会在我想写的东西之间给我一个空白吗?

标签: matlab text-files


【解决方案1】:

有两种基本方法:读取所有内容并提取感兴趣的数据,或者逐行读取并写出您想要的部分。哪种方法最好取决于相关数据;如果它是一个可以完全放入内存的小文件,我会大量读取它,因为逐行读取效率并不高。

话虽如此,这是一个逐行执行的实现:

fid_in = fopen('file.txt');
fid_out = fopen('outfile.txt', 'w+');

while ~feof(fid_in)
    line = fgetl(fid_in);
    fprintf(fid_out, '%s\n\n', line);    %//note the extra new line
    fgetl(fid_in);    %//read and discard next line
end

fclose(fid_in);
fclose(fid_out);

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 2010-12-09
    • 2020-01-02
    • 1970-01-01
    • 2015-12-22
    • 2011-01-05
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多