строка с искажениями в ней ->
$ x="The Raven ƒÆ’¢â‚¬â€œ With Basil Gabbi"
сохраняет все заглавные буквы, а нижний регистр az удаляет все остальное
$ echo ${x//[^A-Za-z ]/}
, оставляя строку вот так
The Raven With Basil Gabbi
будет выглядеть так, как будто это скрипт
title=${TITLE1}
## holds on to normal chars rid the rest
title=${title//[^A-Za-z ]/}
То, что вы хотите, называется подстановкой команд:
file=./path/to/some/file
n="$(grep -cE '[0-9]{1,4}' < "$file")"
echo "there were $n matching lines in $file"
Конечно, вам не нужны кавычки в задании, достаточно n=$(...)
. Но в целом вам нужны кавычки вокруг подстановки команд. Также обратите внимание, что он съедает завершающие символы новой строки.
См. также: