如何删除txt文件中的第n行?

时间:2019-01-05 11:05:09

标签: matlab

我有一个txt文件(ANSYS 1ST原理节点应力列表),其中几乎有16k行。我想删除特定的行,例如1st,2nd,3rd,4th,5th,39th,40th,41th,42th,43th等。我不需要搜索任何内容,我知道要删除的行。有人帮忙吗?

3 个答案:

答案 0 :(得分: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); 

答案 1 :(得分:0)

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

sed -i '2d' data.txt

答案 2 :(得分:0)

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

如果您在UNIX系统上,则使用sed会容易得多。 a great answer here解释了如何执行此操作。关键命令是:

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