#!/bin/bash
#again you must use bash...
valid[0]=160650648 ; valid[1]=163686025
valid[2]=120806542 ; valid[3]=37206841
i=0
while sleep 5; do
scan=$(./RFSniffer)
if [ "$scan" == "$oldscan" ]; then
i=$((i+1))
#if i is minor than 10 restart loop...
#So a alert will not be displayed again after 50 seconds...
if [ "$i" -lt "10" ]; then
continue
else
i=0
fi
fi
case $scan in
${valid[0]})
echo "Good Read"
echo "Your code is " $scan
./buzzer.sh &
omxplayer -o local sleighbells.mp3
curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="DoorBell" &
;;
${valid[1]})
curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="front sensor" &
;;
${valid[2]})
curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="Back door sensor" &
;;
${valid[3]})
curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="Second sensor" &
;;
*)
echo "BAD READ: your code and the valid don't match"
echo "Your correct valid code should be " $scan
;;
esac
oldscan=$scan
scan=''
#sleep 5 not needed sleep 5 is in while condition
done
РЕДАКТИРОВАТЬ :см. комментарии..
Опция, использующая GNU grep
, которая игнорирует первые 19 символов и соответствует только нужному шаблону:
grep -P "(?<=.{19})2" file
Выход:
2021-Jan-26 05:35 foo bar 2 2021-Jan-26 05:37 asdf 2 foo bar
Вы должны сначала использовать cut, чтобы игнорировать шаблон
Я предполагаю, что вывод записывается в файл cat filename |cut -c 19- |grep 2
должен это сделать.
На самом деле вы хотите сопоставить первые 19, но сопоставьте их с «чем угодно».
Итак,
grep '^....................*2'
Всего 20 точек. ^
привязывает шаблон к началу строки. Следующие 19 точек соответствуют одному символу каждая, фактически пропуская их. Затем идет .*
, который соответствует нулю или более символам, затем идет 2
, чтобы соответствовать нужному шаблону.
Вы можете сделать это потенциально более эффективным с помощью
grep '^..................[^2]*2'
соответствует началу строки, затем 19 символов, затем ноль или более символов, которые не являются 2
, затем 2
. В этом случае существенной разницы не будет, но если искомый паттерн более сложный, то эта оптимизация может сильно помочь.