php - 奇怪的是 PHP tail -n 1 返回多个结果

标签 php file tail

我有 this question...回答也很好。但是,奇怪的是如果日志文件有一个独特的最后一行,(即前几个词与前面的行不同)它正确地返回最后一行 tail -n 1 "file" 但如果最后几行与最后一行相似,则返回所有相似的行。

让我告诉你......

它正在读取的文件是...

frame= 1065 fps= 30 q=1.6 size=   11977kB time=35.54 bitrate=2761.1kbits/s    
frame= 1081 fps= 30 q=2.7 size=   12174kB time=36.07 bitrate=2765.0kbits/s    
frame= 1097 fps= 30 q=2.7 size=   12332kB time=36.60 bitrate=2759.9kbits/s    
frame= 1113 fps= 30 q=3.0 size=   12487kB time=37.14 bitrate=2754.4kbits/s    
frame= 1129 fps= 30 q=2.4 size=   12652kB time=37.67 bitrate=2751.3kbits/s    
frame= 1145 fps= 30 q=2.4 size=   12824kB time=38.20 bitrate=2749.7kbits/s    
frame= 1161 fps= 30 q=2.4 size=   12996kB time=38.74 bitrate=2748.1kbits/s    
frame= 1176 fps= 30 q=2.7 size=   13162kB time=39.24 bitrate=2747.8kbits/s    
frame= 1191 fps= 30 q=2.6 size=   13328kB time=39.74 bitrate=2747.4kbits/s    
frame= 1206 fps= 30 q=2.5 size=   13496kB time=40.24 bitrate=2747.5kbits/s    
frame= 1222 fps= 30 q=2.5 size=   13685kB time=40.77 bitrate=2749.6kbits/s    
frame= 1240 fps= 30 q=4.2 size=   13954kB time=41.38 bitrate=2762.8kbits/s    
frame= 1261 fps= 31 q=4.6 Lsize=   14428kB time=42.08 bitrate=2809.1kbits/s    
video:13889kB audio:494kB global headers:0kB muxing overhead 0.314239%

$line = `tail -n 1 "$logfile"`;

返回...

video:13889kB audio:494kB global headers:0kB muxing overhead 0.314239%

但是,如果最后一行更独特的行不存在...它返回:-

frame= 1065 fps= 30 q=1.6 size=   11977kB time=35.54 bitrate=2761.1kbits/s    
frame= 1081 fps= 30 q=2.7 size=   12174kB time=36.07 bitrate=2765.0kbits/s    
frame= 1097 fps= 30 q=2.7 size=   12332kB time=36.60 bitrate=2759.9kbits/s    
frame= 1113 fps= 30 q=3.0 size=   12487kB time=37.14 bitrate=2754.4kbits/s    
frame= 1129 fps= 30 q=2.4 size=   12652kB time=37.67 bitrate=2751.3kbits/s    
frame= 1145 fps= 30 q=2.4 size=   12824kB time=38.20 bitrate=2749.7kbits/s    
frame= 1161 fps= 30 q=2.4 size=   12996kB time=38.74 bitrate=2748.1kbits/s    
frame= 1176 fps= 30 q=2.7 size=   13162kB time=39.24 bitrate=2747.8kbits/s    
frame= 1191 fps= 30 q=2.6 size=   13328kB time=39.74 bitrate=2747.4kbits/s    
frame= 1206 fps= 30 q=2.5 size=   13496kB time=40.24 bitrate=2747.5kbits/s    
frame= 1222 fps= 30 q=2.5 size=   13685kB time=40.77 bitrate=2749.6kbits/s    
frame= 1240 fps= 30 q=4.2 size=   13954kB time=41.38 bitrate=2762.8kbits/s    
frame= 1261 fps= 31 q=4.6 Lsize=   14428kB time=42.08 bitrate=2809.1kbits/s

最佳答案

这些行由“\r”分隔,即回车,而不是换行,因为 ffmpeg(这就是您正在使用的,对吧?)想要在控制台的同一行上显示它们。然而,Tail 期望“\n”作为行分隔符。

在下面总结我们的小评论聊天:打电话

$line = `sed -e "s/\\r/\\n/g" $file | tail -n 1`

将在调用 tail 之前用换行替换回车,从而给出预期的结果。

关于php - 奇怪的是 PHP tail -n 1 返回多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062896/

相关文章:

php - 如何编辑动态创建的文本框值并将其插入到 MySQL DB?

javascript - 是否可以制作一个按钮作为文件上传按钮?

php - 使用 PHP 将图像上传到数据库 (MySql)

java - 指定路径时文件存在无法工作

javascript - 使用 NodeJS(或 PHP)将 API 数据保存到 JSON 文件

java - scala删除所有文件但不删除目录

linux - 将数据集从空格分隔转换为制表符分隔

function - 方案中的尾递归幂函数

bash - 如果文件N秒没有改变就取消 "tail -f"?

windows - Windows 尾部