У меня есть 20 текстовых файлов, и я хочу использовать matlab цикл для получения последней строки каждого файла, не учитывая другие строки. там какая-либо команда matlab должна решить эту проблему?
Вы можете попробовать открыть текстовый файл как двоичный файл, перейти к концу файла и прочитать отдельные символы (т. Е. Байты) в обратном направлении от конца файла. Этот код будет считывать символы с конца файла до тех пор, пока не встретит символ новой строки (игнорируя новую строку, если она находит ее в самом конце файла):
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
В Unix просто используйте:
[status result] = system('tail -n 1 file.txt');
if isstrprop(result(end), 'cntrl'), result(end) = []; end
В Windows вы можете получить исполняемый файл tail
из GnuWin32 или UnxUtils проектов.