Как мне поменять каждый 1 символ на слово "один".
Я хочу изменить, только если он один, например, 11 должно оставаться таким.
11
Следующая команда не найдет его в начале или в конце строки:
sed -Ei 's/([^0-9])0([^0-9])/\nulla\2/g' $1
Это может работать для вас (GNU sed):
sed 's/\<1\>/one/g' file
* \< и \> - это начальные и конечные заполнители нулевого символа в начале слова.
\<
\>
Так что совпадение также начинается и заканчивается.
sed -E 's/([^0-9]|^)1([^0-9]|$)/\1one\2/g'
Но проще использовать расширение GNU \b:
\b
sed 's/\b1\b/one/g'