Как удалить каждую n-ю строку в текстовом файле? - PullRequest
0 голосов
/ 05 января 2019

У меня есть текстовый файл (основной узловой список напряжений ANSYS 1ST), и внутри него почти 16 тыс. Строк. Я хочу удалить определенные строки, например, 1, 2, 3, 4, 5, 39, 40, 41, 42, 43 и т. Д. Мне не нужно ничего искать, я знаю, какие строки будут удалены. Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Это помечено как Matlab, но делать это внутри Matlab будет болезненно, потому что обычно оно не предлагает удобный способ удаления байтов в середине файла, так что вы должны иметь написать некоторый код для записи текста в новый файл, пропуская соответствующие строки.

Если вы работаете в UNIX-системе, использовать sed будет намного проще. Здесь есть отличный ответ , объясняющий, как это сделать. Ключевая команда:

# To delete line 10 and 12:
sed -i -e '10d;12d' your-file.txt
0 голосов
/ 05 января 2019

Возможно, не самый эффективный способ, но это работает:

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); 
0 голосов
/ 05 января 2019

Если вы используете Linux, вы можете использовать эту команду:

sed -i '2d' data.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...