Isso tentaria combinar desde o começo:
t=TMP_ABC_SEQ_NUM
for n in $(seq 0 ${#t})
do
grep ${t:n} dictionary.txt && break
done
Isso procura a sequência mais longa, não importa onde ela comece:
for len in $(seq ${#t} -1 3)
do
for start in $(seq 0 $((${#t}-len)))
do
grep ${t:start:len} dictionary.txt && break 2
done
done
requisito: Um shell tipo bash, disponível aqui: portas win32 nativas de vários utilitários GNU, como sh.exe, grep, sed, awk , bc, gato, tac, rev, col, corte, ...