Первый вопрос:
echo 'abcd123'
фактически выводит 'abcd123\n'
на стандартный вывод. А для tr -c 'a-z' '0-9'
опция -c
означает, что для перевода будет использоваться дополнение к 'a-z'
, см. Справочную страницу tr
.
Гораздо больше символов, кроме «az», соответствуют «0-9», поэтому оставшийся символ 'abcd123\n'
, исключая строчные буквы, то есть '123\n'
, будет переведен в '9999'
. Таким образом, результатом является 'abcd9999', с последующим '\n'.
Второй вопрос очень прост:
echo hello 1 char 2 next 4
распечатать hello 1 char 2 next 4\n
to stdout. 'tr -d -c '0-9 \n''
удаляет каждое дополнение числа '0-9'
символа пробела и '\n'.
Вот почему оставшийся символ содержит цифры и пробелы и, между прочим, завершающий символ '\n'.