【问题标题】:MPlayer screenlog outputMPlayer 屏幕日志输出
【发布时间】:2014-06-17 18:16:42
【问题描述】:

我的朋友正在 Raspberry PI 上创建 mplayer 服务器,目前正在尝试检查屏幕日志的当前时间。 问题从获得最后一行开始。 不管我们使用 tail、awk、read 还是其他任何东西,控制台输出总是断行并刷新(排序)。 使用 cat 也不会输出整个文件,而是逐行删除前一个文件。 MPlayer 将'\033[K' 添加到所有行,并且似乎无法通过 sed 删除它,或者定义其他 IFS。

以下是一些输出:

[bot@aurora ~]$ tail -n 1 screenlog.0
A: 00:00:57 / 00:04:19 (21%) Cache: 45%[bot@aurora ~]$
[bot@aurora ~]$ tail -n 1 screenlog.0 | awk {'print $2'}
00:00:00


[bot@aurora ~]$ awk '/./{line=$0} END{print line}' screenlog.0
A: 00:00:57 / 00:04:19 (21%) Cache: 45%
[bot@aurora ~]$ awk '/./{line=$0} END{print line}' screenlog.0 | awk {'print $2'}
00:00:00

这是屏幕日志:http://sejbr.max-play.pl/screenlog.0

【问题讨论】:

  • 请展示你用 sed 做了什么。设置像printf "<ESC>[Kabc\nlmn<ESC>[Kopq\nxyz<ESC>[K\nend\n" | sed 's/<ESC>[K//' 这样的小测试用例,向我们展示你得到了什么。 <ESC> 当然只是一个占位符标记,在 vi(m) 中,您需要执行 Ctrl-V 才能获得真正的 字符(将显示为 ^[)。也许那是你的问题?祝你好运。
  • @shellter 这是 vim 显示的 ^[[0m^[[0mA: 00:00:00 / 00:04:19 (0%) Cache: 86%^[[K^M^[[0m^[[0mA: 00:00:00 / 00:04:19 (0%) Cache: 86%^[[K^M^。仍然将其消除似乎不起作用并且行为相同。我试过's/^[K//',它给了我表达错误,所以我转义了特殊字符('s/\^\[K//')。我还尝试了其他网站上的sed "s,\x1B\[[0-9;]*[a-zA-Z],,g",理论上它应该删除除 alnum 之外的所有内容。问题还是一样。
  • 编辑文件中的任何内容并使用 sublimetext3 再次保存似乎可以解决问题。特殊字符仍然在 vim 可见的文件中,但它似乎不像以前那样奇怪。那么当mkplayer通过屏幕保存时,文件格式或其他问题是否存在问题?同样,由于重新保存的文件可以正常工作,问题本身的屏幕日志也可以正常工作..
  • 好的,很难决定在哪里采取行动。如果您可以编辑您的问题以包含 2 行示例数据,或者至少从您发布的 screenlog.0 的前 2 行中得到预期的输出,也许我们可以提供帮助。 (但是我没有看到任何 ^[ 字符)。还重新阅读我最初的评论。关键点是屏幕上显示为 2 个字符的内容,'^[` 实际上是 1 个字符,<ESC> 字符。从您上面的回答来看,您并不清楚您是否看到了差异。 (我可能错了 ;-) .. 祝你好运!
  • 这种东西是seds能力的极限,并且是为高级用户准备的。我相信它是可以做到的,(我几乎可以肯定在一份旧工作中我已经完成了这个(但不再有代码)),所以你只需要继续努力。因此,制作较小的测试用例以使一件事起作用,然后添加更多。重申一下,^[ 是一个字符,然后是 [ 这是另一个字符,然后是 0m 是另外 2 个字符。祝你好运。

标签: bash awk cat tail


【解决方案1】:

通过'strings'管道mplayer的输出,像这样:

mplayer file | strings >screenlog.0

【讨论】:

【解决方案2】:

我的朋友想出了一个解决方案。 最简单的方法是使用 bash 之外的东西,比如 PHP。

$data = file_get_contents('/tmp/mplayer');
$data = preg_replace('/\<ESC>\[K/' , "\n", $data);
echo $data;

嗯,这在某种程度上很简单:P。

感谢大家的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2021-06-27
    • 2015-04-12
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多