Похоже, мне пришлось использовать двойные -кавычки. Похоже, это исправило:
SH_OFF="\[\033[00m\]"
SH_BLACK="\[\033[1;30m\]"
SH_BLUE="\[\033[1;34m\]"
SH_GREEN="\[\033[1;32m\]"
SH_CYAN="\[\033[1;36m\]"
SH_RED="\[\033[1;31m\]"
SH_PURPLE="\[\033[1;35m\]"
SH_BROWN="\[\033[1;33m\]"
SH_YELLOW="\[\033[1;33m\]"
\d
не поддерживается sed
. Вместо этого попробуйте использовать [0-9]
.
В качестве примера я попробовал предоставленный вами образец файла
find /home/subd1/subd2/$dirname -type d
find /home1/subd1/subd2/$dirname -type d
find /home10/subd1/subd2/$dirname -type d
Когда указаноsed -i 's;/home[0-9]*/;/home3/;g' test.txt
(Использование ;
в качестве разделителя sed, чтобы мне не приходилось экранировать каждый /
), файл был отредактирован до
find /home3/subd1/subd2/$dirname -type d
find /home3/subd1/subd2/$dirname -type d
find /home3/subd1/subd2/$dirname -type d
Важно отметить, что это изменит каждый экземпляр /home/
и /home<no>/
на одни и те же новые значения (в данном случае/home3/
). Я думаю, что это ваша цель, но если это не так, вам понадобится другое sed
выражение