Мониторинг файла журнала на наличие строки, затем создание переменной из той же строки для обработки указанного файла - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь обработать аудиозаписи в архив из Asterisk. Используя 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 недоступен в этой системе.

1 Ответ

1 голос
/ 26 июня 2019

Может быть, что-то вроде

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