【问题标题】:How to delete every nth lines in a txt file?如何删除txt文件中的每n行?
【发布时间】:2019-05-31 18:12:09
【问题描述】:

我有一个 txt 文件(ANSYS 1ST 原理节点应力列表),里面有将近 16k 行。我想删除特定的行,例如第 1、第 2、第 3、第 4、第 5、第 39、第 40、第 41、第 42、第 43 等。我不需要搜索任何内容,我知道要删除哪些行。有人帮忙吗?

【问题讨论】:

标签: matlab


【解决方案1】:

也许不是最有效的方法,但这是可行的:

data_file = 'data.txt';
lines_to_skip = [1:5, 39:43];

fid = fopen(data_file);
ii = 0;
while ~feof(fid)
    ii = ii + 1;
    file_content{ii} = fgetl(fid);
end

lines = true(1,ii);
lines(lines_to_skip) = false;
fid = fopen(data_file,'w');
fprintf(fid,'%s\r\n',file_content{lines});
fclose(fid); 

【讨论】:

    【解决方案2】:

    如果您使用的是 linux,则可以使用该命令:

    sed -i '2d' data.txt
    

    【讨论】:

      【解决方案3】:

      这被标记为 Matlab,但是在 Matlab 中这样做会很痛苦,因为它通常不提供一种方便的方法来删除文件中间的字节,所以你会必须编写一些代码将文本写入新文件,并酌情跳过行。

      如果您使用的是 UNIX 系统,使用 sed 会容易得多。 a great answer here 解释了如何做到这一点。关键命令是:

      # To delete line 10 and 12:
      sed -i -e '10d;12d' your-file.txt
      

      【讨论】:

        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多