目前我有这样的东西:
./player_script |grep "videoname" >> log.log &
的输出player_script
显示视频的开始和结束时间,grep
然后仅获取某些视频文件名并将其放入其中log.log
。
因此log.log
看起来像这样:
video <videoname> is playing now
video <videoname> ended
video <videoname> is playing now
video <videoname> ended
... 等等。
我需要的是文件在每一行开始和结束的时间戳,格式如下:
Feb 28 15:35:32 video <videoname> is playing now
我还需要日志文件的日期:log2012-02-29.log
。
它正在 Solaris 5.8 和 5.9 上运行。
答案1
回答你的第二部分很简单。不要使用 log.log,而是使用以下命令:
log`date '+%Y-%m-%d'`.log
请特别注意,date 命令后面有“反引号”。这告诉 shell 首先执行该命令,然后将结果粘贴到命令行上,使其成为文件名的一部分。
答案2
对于第一部分(由于我只能访问 Solaris 11,所以有点盲目尝试),有一个sh
脚本解决方案:
./player_script | grep "videoname" | while read line;
do echo `date '+%Y-%m-%d:%H:%M:%s'` $line;
done >> log`date '+%Y-%m-%d'`.log
请注意,如果使用以下格式,可以更轻松地按日期对多行日志进行排序+%Y-%m-%d...
如果您希望日志条目上有准确的时间戳,您还必须小心,player_script
或者grep
不要缓冲数据。