Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 监视日志文件中的字符串,然后从同一行创建变量以处理所述文件_Shell_Awk_Scripting_Grep - Fatal编程技术网

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

Shell 监视日志文件中的字符串,然后从同一行创建变量以处理所述文件,shell,awk,scripting,grep,Shell,Awk,Scripting,Grep,我正在尝试处理音频日志以从Asterisk存档。使用星号,我有一个日志文件20190625.txt,看起来像这样,有两个记录: 20190625201018,RXKEY,1999 20190625201018,TXKEY,MAIN 20190625201018,RXUNKEY,1999 20190625201019,RXKEY,1999 20190625201021,RXUNKEY,1999 20190625201023,TXUNKEY,MAIN 20190625201115,RXKEY,199

我正在尝试处理音频日志以从Asterisk存档。使用星号,我有一个日志文件20190625.txt,看起来像这样,有两个记录:

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

我很感谢您的努力,但无论是在bash脚本中还是直接从cli中,这都不会起任何作用。@JaeNulton,呃,为我的测试工作。也许是缓冲问题?可能需要在awk位上添加一个fflush。由于tail-f,您还需要手动杀死它