我有20个文本文件,我想使用matlab循环来获取每个文件的最后一行而不考虑其他行。是否有任何matlab命令来解决这个问题?
答案 0 :(得分:5)
您可以尝试的一件事是将文本文件作为二进制文件打开,搜索到文件的末尾,并从文件末尾向后读取单个字符(即字节)。此代码将从文件末尾读取字符,直到它到达换行符(如果在文件的最末端找到换行符,则忽略换行符):
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
答案 1 :(得分:3)
在Unix上,只需使用:
[status result] = system('tail -n 1 file.txt');
if isstrprop(result(end), 'cntrl'), result(end) = []; end
答案 2 :(得分:2)
它可能效率不高,但对于短文件来说就足够了。
function pline = getLastTextLine(filepath)
fid = fopen(filepath);
while 1
line = fgetl(fid);
if ~ischar(line)
break;
end
pline = line;
end
fclose(fid);