2016-12-07 4 views
0

У меня есть несколько скриптов в каталог и этот каталог, содержащий другие папки. Какой сценарий всегда находится в моем первом (родительском) каталоге, я хочу заменить всю строку «dev» на prod. но в некоторых сценариях я аннулирую это с помощью dev/null. Я не хочу изменять это как prod/null. Я заменяю все остальные 'dev', используя команду ниже.Исключить smililar строку при использовании sed

grep -rl dev somedir|xargs sed -i 's/dev/prod/g' 

Пожалуйста, дайте мне знать, если есть способ, чтобы исключить изменение Dev/нуль, чтобы прод/нуль

Спасибо.

ответ

0

Если каждая запись в grep -r1 dev somedir отделяется символом новой строки, вы можете использовать этот

grep -rl dev somedir | grep -v "dev/null" | xargs sed -i 's/dev/prod/g' 
0

можно заменить /dev/null в какой-то другой строки (т.е. /xxx/null) перед выполнением dev ->prog замену и изменить его до /dev/null.

grep -rl dev somedir|xargs sed -i -e 's!/dev/null!/xxx/null!g' -e 's/dev/prod/g' -e 's!/xxx/null!/dev/null!g' 
Смежные вопросы