A ferramenta “apropriada” para executar um comando em uma série de linhas a partir da entrada padrão (ou em qualquer outro lugar) é xargs
:
grep error log.txt | xargs -r -d\n -n 1 bash -c 'echo ${0:20:10}'
No entanto, no seu exemplo, é muito melhor usar cut
:
grep error log.txt | cut -c21-30