通过Matlab读取.log文件的最后2行

通过Matlab读取.log文件的最后2行,matlab,Matlab,我试图解决的问题如下: 我有一个.log文件,它每x秒更新一次(我可以更改一个时间间隔),其中包含来自测试设备的更新状态信息。每隔一段时间,会向.log文件中添加另一行,其中包含更新的信息。我的目标是使最新的状态信息(.log文件的最后两行)在Matlab中易于查看 以下是一个示例,说明了在相关情况下每个更新的外观(一行文本): 我所尝试的: 我使用readtable命令(如下所示)查看.log文件中的信息,但每次调用函数时,我都会看到整个.log文件,而我只需要/需要最后两行 data =

我试图解决的问题如下:

我有一个.log文件,它每x秒更新一次(我可以更改一个时间间隔),其中包含来自测试设备的更新状态信息。每隔一段时间,会向.log文件中添加另一行,其中包含更新的信息。我的目标是使最新的状态信息(.log文件的最后两行)在Matlab中易于查看

以下是一个示例,说明了在相关情况下每个更新的外观(一行文本):

我所尝试的:

我使用readtable命令(如下所示)查看.log文件中的信息,但每次调用函数时,我都会看到整个.log文件,而我只需要/需要最后两行

data = readtable('FileName.log','FileType','text')
我知道如果我使用.csv或.xlsx文件,这会更简单,但是测试设备只更新.log文件,所以我不能只更改文件类型,因为它不会得到更新


任何建议都将不胜感激。

如果.log文件为纯文本格式(我根据您的代码片段假设),您可以使用MATLAB中的以下系统命令获取文件的最后2行:

[status,output]=系统(['tail-n2',path])


请务必记住,这要求
tail
命令可用,默认情况下windows中不可用-但是您可以通过安装包含
tail
命令的包来解决此问题,例如。

如果.log文件为纯文本格式(我根据您的代码段假设),使用MATLAB中的以下系统命令可以获得文件的最后2行:

[status,output]=系统(['tail-n2',path])


请务必记住,这要求
tail
命令可用,默认情况下windows中不可用-但是您可以通过安装包含
tail
命令的软件包来解决此问题。

这正是我想在这里回答的问题!这正是我想在这里回答的!如果matlab一直在运行,你可以一直读到最后,然后反复寻找那个位置,然后再尝试阅读。我同意@L.ScottJohnson的解决方案。更糟糕的选择是:在每次读取后重命名文件(filename\N.log),我假设日志记录将创建一个新文件,如果它不存在的话。然后,您可以轮询新文件,处理数据并再次重命名。完成后,连接所有文件。如果matlab持续运行,您可以读取到最后,然后反复查看该位置并再次尝试读取。我同意@L.ScottJohnson的解决方案。更糟糕的选择是:在每次读取后重命名文件(filename\N.log),我假设日志记录将创建一个新文件,如果它不存在的话。然后,您可以轮询新文件,处理数据并再次重命名。完成后,连接所有文件。