ADB 命令显示时间格式 HH:MM:SS.SSSS

ADB Command to display time format in HH:MM:SS.SSSS

我正在通过使用 ADB 命令查找不同的状态(状态缓冲、状态播放等)来对 youtube 进行 QoE 分析。以下命令显示了 youtube 视频播放的状态。

adb shell dumpsys media_session | grep "state=PlaybackState"

但是上面命令的问题是它给出了没有时间戳的输出日志。但是我需要时间戳来进行数据分析。然后我找到了打印时间和状态的解决方案。

printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line";

两个命令的组合结果输出如下:

state=PlaybackState {state=7, position=-1, buffered position=0, speed=1.0, updated=533687, actions=0, custom actions=[], active item id=-1, error=Bluetooth audio disconnected}
      state=PlaybackState {state=0, position=0, buffered position=0, speed=1.0, updated=1243174, actions=8192, custom actions=[], active item id=-1, error=null}
[2021-06-24 15:38:48]

但我的要求是打印时间和毫秒(15:38:48.078 之类的)。我该怎么做?

根据 date 手册页,您需要使用 %N 格式化程序来获取纳秒。
由于您需要毫秒,因此可以使用 %3N.
最终的 printf 命令应该是:

printf '[%s] %s\n' "$(date '+"%Y-%m-%d %T.%3N"')" "$line";