shell - 监视日志文件中的字符串,然后从同一行创建变量以处理所述文件
问题描述
我正在尝试处理音频日志以从 Asterisk 存档。使用 Asterisk 我有一个日志文件 (20190625.txt),看起来像这样,有 2 个记录:
20190625201018,RXKEY,1999
20190625201018,TXKEY,MAIN
20190625201018,RXUNKEY,1999
20190625201019,RXKEY,1999
20190625201021,RXUNKEY,1999
20190625201023,TXUNKEY,MAIN
20190625201115,RXKEY,1999
20190625201115,TXKEY,MAIN
20190625201115,RXUNKEY,1999
20190625201115,RXKEY,1999
20190625201127,RXUNKEY,1999
20190625201133,TXUNKEY,MAIN
当我运行脚本时,我不能简单地处理音频文件和转码,因为文件会在录制开始时出现,并在完成写入之前显示。但是,一旦记录了 RXUNKEY, 1999,文件就完成了写入。所以我想监视日志文件,当发现 RXUNKEY, 1999 时,我需要将同一行中的文件时间戳存储为变量($file)。
然后,我将使用 FFMPEG 处理文件,将 $file.WAV 转换为 $file.MP3,并将其存储在不同的目录中。然后清除原始 .WAV 并删除日志文件的内容。
Inotifywait 在此系统上不可用。
解决方案
也许像
tail -f 20190625.txt | awk -F, '$2 == "RXUNKEY" && $3 == 1999 { print $1; fflush() }' |
while read file; do
# Work with $file
done
推荐阅读
- python - 如何在 Ansible 任务中注册 python 变量
- docker - Dockerfile 问题导致“curl (56) Recv failure”
- google-cloud-datastore - Dataflow 状态处理中的 Exactly-once 语义
- graphql - 具有不同 API 版本的客户端上的 graphql 查询
- ruby-on-rails - 生成新模型时如何指定belongs_to 和has_many 关系
- android - 如何制作不同形状的布局
- c++ - 在 C++ 中访问列表中的列表
- javascript - 在 JS 中传递输入参数显示意外的输入结束
- python - 安装成功后导入tensorflow时出错
- go - 如何使用 go-swagger 服务 websocket?