2016-02-04 2 views
1

Я пытаюсь заменить строку какЗаменить строку с помощью специальных символов с помощью Perl

</string§> 

с

new string line 1 
new string line 2 

с Perl на Linux.

Проблема в том, что она не принимает < и>, а также /.

Это то, что я получил:

perl -i -pe 's/\<\/string§\>/new string line 1 \n new string line 2/se' file.xml 

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

Спасибо!

+2

восьмеричные на однострочных может быть интересным. Вы должны получить обратную косую черту перед своей оболочкой, прежде чем Perl сможет ее увидеть. Анубхава имеет правильную идею полностью избежать их. – tjd

ответ

1

Вам не нужно s и e модификаторов, а также может использовать альтернативный регулярное выражение demiter (кроме /), чтобы избежать побега:

perl -pe 's~</string§>~new string line 1 \nnew string line 2~' file.xml 
new string line 1 
new string line 2 
+1

Спасибо, отлично работает! Другой вопрос: знаете ли вы хороший учебник по perl? –

+0

Предлагаю начать здесь: http://learn.perl.org/tutorials/ – anubhava

+0

@JakobBenz, ваша подстановка хорошо работала бы в Perl-скрипте. Вы столкнулись с вашей раковиной. – tjd

Смежные вопросы