Используйте оператор awk ~
, и вам не нужно предоставлять буквальное регулярное выражение с правой стороны:
function _process () {
awk -v l="$line" -v pattern="$1" '
$0 ~ pattern {p=1}
END {if(p) print l >> "outfile.txt"}
'
}
Хотя это было бы более эффективно (не нужно читать полностью файл)
function _process () {
grep -q "$1" && echo "$line"
}
В зависимости от шаблона может потребоваться grep -Eq "$ 1"
Не мой ответ, но этот у меня сработал:
Я нашел обходной путь с помощью "v4l2loopback". Как показано ниже, с помощью «v4l2loopback» ffmpeg может выводить снятый с экрана фильм на устройство v4l2. Затем в приложении Slack вы можете поделиться своим экраном в качестве входа с камеры.
$ sudo modprobe v4l2loopback exclusive_caps=1
$ ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 \
-i :0.0+0,0 -f v4l2 -vcodec rawvideo -pix_fmt rgb24 /dev/video1
/dev/video1
на ваше устройство v4l2loopback, созданное sudo modprobe v4l2loopback exclusive_caps=1
. Итак, если вы делаете /dev/video1
с помощью v4l2loopback и имеете два экрана монитора размером "1920x1080" слева и справа.
Для перехода на левый экран:
$ ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+0,0 -f v4l2 \
-vcodec rawvideo -pix_fmt rgb24 /dev/video1
Для получения правильного экрана:
$ ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+1920,0 -f v4l2 \
-vcodec rawvideo -pix_fmt rgb24 /dev/video1
Парень также сделал следующий инструмент командной строки для более простого выполнения этих команд:https://github.com/BlueSkyDetector/set_v4l2loopback_screen
Примечания:
Мне пришлось установить v4l2loopback-dkms
на Ubuntu 18.04:
$ sudo apt-get install v4l2loopback-dkms
modprobe
создал /dev/video0
для меня, так как у меня не установлена другая камера