2017-02-22 10 views
-1

Я с трудом с помощью СЭД заменитьSed Имея пространство в Regex

proxy: '' 

с

proxy: 'https://link.com:8099' 

в файле

Я имею следующую команду (смотри ниже), но это дает мне

proxy: https://link.com:8099'' 

с обоими кавычками после URL.

sed '[email protected]: ''@proxy: 'http://link.com:8099'@'<test.txt > test1.txt 

Любая помощь приветствуется.

Примечание: Я делаю это в RHEL и должен сделать это в рамках шеф-повара.

ответ

1

Это должно работать:

echo "proxy: ''" |sed 's#\x27\x27#\x27https://link.com:8099\x27#g' 
proxy: 'https://link.com:8099' 

Почему это работает:
Мы используем другой разделитель # поэтому нам не нужно, чтобы избежать /
Вместо миллиона побегов в '' мы используем шестнадцатиричное ASCII код из них = \x27

0

Вы можете указать двойную одинарную цену '' с '\'\''.

Вы можете сделать так:

sed -r 's/(proxy:\s+)('\'\'')/\1'\'https:\\/\\/link.com:8099\''/g' test.txt > test1.txt 

Первая группа является proxy: текст подчиняющегося одинарные кавычки, чтобы заменить

+0

Наше отличие - это несколько секунд! :) –

0
$ echo "proxy: ''" | sed -e "[email protected]: ''@proxy: 'http://blah'@" 
proxy: 'http://blah' 

ли я что-то пропустил в этом вопросе?