Как я могу заменить выражение, которое имеет косую черту, на другое во всех каталогах и дочерних каталогах?

Я использовал это, чтобы найти: grep -rnw "/var/www/site" -e "app/COD1"

А теперь я хочу заменить: «app /COD1» на «app2 /COD2» во всех файлах.

Я перешел на сайт dir /var /www / и попробовал с: sed -i 's,app/COD1,app2/COD2,g' * и с sed -i 's/'app/ABC'/'apps/ABC'/g' * без удачи ...

2 ответа2

0
grep -rl 'app/ABC' /opt/apps/ABC | xargs sed -i -e "s,app/ABC,apps/ABC,g"
0

Вам нужна опция -e чтобы указать команду в командной строке. Учитывая это, у меня работает следующее:

$ cat file.txt
app/COD1
app/COD2
app2/COD1
app/COD1
app/COD1
$ sed -i -e "s,app/COD1,app2/COD2,g" file.txt
$ cat file.txt
app2/COD2
app/COD2
app2/COD1
app2/COD2
app2/COD2

Использование обратной косой черты также работает, если вы заменяете то, что может иметь запятые (или любой другой разделитель, который вы выберете):

$ sed -i -e "s/app\\/COD1/app2\\/COD2/" file.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .