Eu não sei qual texto seu livro usa, mas o manual do bash está claro (se você já conhece um pouco os redirecionamentos):
If
|&is used, command1’s standard error, in addition to its standard output, is connected to command2’s standard input through the pipe; it is shorthand for2>&1 |. This implicit redirection of the standard error to the standard output is performed after any redirections specified by the command.
Portanto, se você não quiser misturar a saída padrão e o erro padrão, será necessário redirecionar a saída padrão para outro local. Veja Como grep stream de erro padrão (stderr)?
{ ./script.sh 2>&1 >&3 | sed 's:^:\t:'; } 3>&1
No entanto, os dois fd 1 e 3 de script.sh e sed apontarão para o destino stdout original. Se você quer ser um bom cidadão, pode fechar aqueles fd 3 que esses comandos não precisam:
{ ./script.sh 2>&1 >&3 3>&- | sed 's:^:\t:' 3>&-; } 3>&1
bash e ksh93 podem condensar o >&3 3>&- para >&3- (fd move).