sed может сделать это самостоятельно:
sed -e '5,${/MNO/s/DEF/ABC/g;}'
Это:
MNO
, для действия с командой замены s
для замены DEF
на ABC
в этих строках. Все остальные строки печатаются без изменений.
Решил.
Причина, по которой это не работало, заключалась в том, что, поскольку logread -f
является постоянным отслеживанием журнала , буфер sendmail
никогда не закрывался, и, следовательно, почта никогда не отправлялась, пока процесс не был завершен. прекращено.
#!/bin/ash
logread -f | awk ' /control connection started/ {
print "From: R01 Router <myemail@email.com>" > "awkout.txt"
print "To: "myemail@email.com" >> "awkout.txt"
print "Mime-Version: 1.0" >> "awkout.txt"
print "Content-Type: text/plain" >> "awkout.txt"
print "Subject: Incoming PPTP connection from " $10 >> "awkout.txt"
print "Content-Transfer-Encoding: 7bit" >> "awkout.txt"
print "Incoming PPTP connection from " $10 >> "awkout.txt"
system("ssmtp myemail@email.com < awkout.txt");
} ' &
Этот код будет отправлять электронное письмо каждый раз, когда awk находит совпадение. Надеюсь, это поможет любому, кто пытается отслеживать лог-чтение в OpenWrt
.