Как использовать sed и регулярное выражение для поиска и замены строки внутри файла?

Похоже, мне пришлось использовать двойные -кавычки. Похоже, это исправило:

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\]"
0
01.08.2020, 03:04
1 ответ

\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выражение

2
18.03.2021, 23:15

Теги

Похожие вопросы