监视日志文件中的字符串,然后从同一行创建变量以处理所述文件

时间:2019-06-26 01:29:55

标签: shell awk scripting grep

我正在尝试处理音频日志以从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在此系统上不可用。

1 个答案:

答案 0 :(得分:1)

也许像

tail -f 20190625.txt | awk -F, '$2 == "RXUNKEY" && $3 == 1999 { print $1; fflush() }' |
while read file; do
  # Work with $file
done