2016-12-16 3 views
0

У меня есть файл, который содержит строки, как показано ниже,СЕПГ шаблон поиска с именем переменной и комментировать его

target   /test/purpose/for/firstunit chapter 
target  /test/purpose/for/firstunit chapter 

я присвоил переменной,

i="/test/purpose/for/firstunit" 

и пытается комментируйте строки, который содержит значение этой переменной

sed -i "/\$i/s/^/#/g" file_name 

но его не работает. не знаю, чего здесь нет.

ответ

1

Поскольку шаблон, который вы используете, содержит косые черты /, команда sed получает слишком много сокращений в целом.

Таким образом, это просто вопрос использования другой разделитель, например _:

sed "\_${i}_s_^_\#_g" file 

Давайте протестируем его

$ cat f 
target   /test/purpose/for/firstunit chapter 
target  /test/purpose/for/firstunit chapter 
dad 
$ sed "\_${i}_s_^_\#_g" f 
#target   /test/purpose/for/firstunit chapter 
#target  /test/purpose/for/firstunit chapter 
dad 
+0

Хммм все еще становится ниже ошибки 'sed: -e выражение # 1, char 53: ожидаемая новая версия sed' – Karthi1234

3

Другой подход с СЕПГ:

sed -i "s:.*$i:#&:" file_name 

Добавляет ведущий # в строки, содержащие значение $i.

+1

Это сработало! Спасибо! – Karthi1234