A primeira pergunta:
echo 'abcd123' na verdade imprime 'abcd123\n' para stdout. E para tr -c 'a-z' '0-9' , a opção -c significa que o complemento de 'a-z' será usado para a tradução, consulte man page de tr .
Há muito mais caractere excluindo 'a-z' correspondente a '0-9', portanto, o caractere restante de 'abcd123\n' , excluindo caractere minúsculo, que é '123\n' , será traduzido como '9999' . Então, o resultado é 'abcd9999', com o trailing '\ n'.
A segunda pergunta é muito simples:
echo hello 1 char 2 next 4 print hello 1 char 2 next 4\n para stdout. O 'tr -d -c '0-9 \n'' exclui todos os complementos de '0-9' number e space character e '\ n'.
É por isso que o caractere restante contém números e espaços e, a propósito, um caractere '\ n'.