Se awk for uma opção:
awk 'BEGIN{o=d=1} /\[old\]/{o=0} /device: 1000/&&o==1{d=0;exit} END{exit d}' file
Explicação:
-
BEGIN{o=d=1}: inicializa as variáveis -
/\[old\]/{o=0}if[old]: é encontrado definidoo=0 -
/device: 1000/&&o==1{d=0;exit}: sedevice: 1000for encontrado e[old]ainda não for encontrado, definad=0e vá para o blocoEND{}sem examinar o arquivo ainda mais. -
END{exit d}: sair com o valor fornecido ded
Execute assim:
awk 'BEGIN{o=d=1} /\[old\]/{o=0} /device: 1000/&&o==1{d=0;exit} END{exit d}' file && echo "contains" || echo "contains not"