2015-09-21 3 views
0

Я пытаюсь удалить символы между символом> и < символ, как показано ниже, и заменить на IP-адрес 8.8.8.8SED заменить между символами> и <

<value name="CLIENTPREFIX">J_jRQtEolDEurgAVIwwwADXaZQs_</value> 

Я попытался следуя с СЕПГ первым, чтобы удалить символы,

sed -i "/CLIENTPREFIX/s/\b>*.\b>//" name.sh 

, а затем использовать отдельную команду, чтобы добавить IP-АДРЕС

Может кто-нибудь помочь в объединении обе команды одна команда?

Спасибо!

ответ

1

Вы должны использовать .* вместо *., а также второй символ в своем регулярном выражении это неправильно, это должно быть <

sed "/CLIENTPREFIX/s/>[^<>]*</>$ip</g" file 

или

$ echo '<value name="CLIENTPREFIX">J_jRQtEolDEurgAVIwwwADXaZQs_</value>' | sed "/CLIENTPREFIX/s/>.*</>$ip</" 
<value name="CLIENTPREFIX"></value> 
+0

Спасибо. Как добавить IP между> и Lego

+0

отредактирован ......... –

1

С GNU СЭД и переменные:

CP="CLIENTPREFIX" 
IP="8.8.8.8" 
sed -E -i 's/("'"$CP"'">)[^<]*(<)/\1'"$IP"'\2/' name.sh 

Выход в файл name.sh:

<value name="CLIENTPREFIX">8.8.8.8</value> 
1

Yo может захватывать группы, найденные в регулярных выражений

sed -i "s/\(<value.*>\).*\(<\/value>\)/\18.8.8.8\2/g" name.sh 

Пояснение:

Все между \( и \) будет рассматривать группу, что вы можете использовать по \1, \2 и т. Д. (В зависимости от количества определенных вами групп).
Первая часть \(<value.*>\).*\(<\/value>\) хранит в первой группе значение <value name="CLIENTPREFIX">, а во второй группе значение </value>.
Вторая часть заменяет все, который соответствовал, по содержанию первой группы, за которым следует 8.8.8.8, folowed по содержанию второй группы, превращая линию
<value name="CLIENTPREFIX">J_jRQtEolDEurgAVIwwwADXaZQs_</value>
в
<value name="CLIENTPREFIX">8.8.8.8</value>

0
$ sed 's/\(CLIENTPREFIX">\)[^<]*/\18.8.8.8/' file 
<value name="CLIENTPREFIX">8.8.8.8</value> 

или если вам нужен ip addr в переменной и предполагается, что ip='8.8.8.8' установлено где-то раньше:

$ sed 's/\(CLIENTPREFIX">\)[^<]*/\1'"$ip"'/' file 
<value name="CLIENTPREFIX">8.8.8.8</value> 
Смежные вопросы