Команда Matlab для доступа к последней строке каждого файла?

У меня есть 20 текстовых файлов, и я хочу использовать matlab цикл для получения последней строки каждого файла, не учитывая другие строки. там какая-либо команда matlab должна решить эту проблему?

5
задан bzak 17 April 2010 в 17:45
поделиться

2 ответа

Вы можете попробовать открыть текстовый файл как двоичный файл, перейти к концу файла и прочитать отдельные символы (т. Е. Байты) в обратном направлении от конца файла. Этот код будет считывать символы с конца файла до тех пор, пока не встретит символ новой строки (игнорируя новую строку, если она находит ее в самом конце файла):

fid = fopen('data.txt','r');     %# Open the file as a binary
lastLine = '';                   %# Initialize to empty
offset = 1;                      %# Offset from the end of file
fseek(fid,-offset,'eof');        %# Seek to the file end, minus the offset
newChar = fread(fid,1,'*char');  %# Read one character
while (~strcmp(newChar,char(10))) || (offset == 1)
  lastLine = [newChar lastLine];   %# Add the character to a string
  offset = offset+1;
  fseek(fid,-offset,'eof');        %# Seek to the file end, minus the offset
  newChar = fread(fid,1,'*char');  %# Read one character
end
fclose(fid);  %# Close the file
5
ответ дан 13 December 2019 в 22:04
поделиться

В Unix просто используйте:

[status result] = system('tail -n 1 file.txt');
if isstrprop(result(end), 'cntrl'), result(end) = []; end

В Windows вы можете получить исполняемый файл tail из GnuWin32 или UnxUtils проектов.

3
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: