Заменить строку текста через скрипт - PullRequest
0 голосов
/ 29 декабря 2011

Я играю со скриптом, который обновляет файл, заменяя строку текста строкой, которая хранится в переменной.Попробовав кучу вещей, я предполагаю, что проблема заключается в вставленном тексте, вероятно, в нем используются символы, которые не нравится sed.Пример того, как я использую команду, с тем, как выглядит текст замены, приведен ниже:

sed 's/^define.*$/'define('AUTH_KEY',         'r*v8]Wic;@Y4{|0EQ9Z?~W,-P}k:d{k)ylAFHm-d(tY6v?U,5{hn].e9eH%/Xmdy');'/' change.html

Я читал где-то еще здесь, что вам нужно экранировать символы, но не удалось получитьэто работает с ответом, который я нашел здесь: Избегайте строки для шаблона замены sed

Любая помощь или указатель в правильном направлении очень ценится, спасибо!:)

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Имейте в виду, что sed может принимать любой символ в качестве разделителя, и что / является только условным.Если вы можете гарантировать, что в вашем ключе нет пробелов, вы можете попробовать:

sed 's ^define.*$ &(yourkey) '
0 голосов
/ 29 декабря 2011

Попробуйте что-то вроде этого -

Назначьте заменяющий текст переменной -

[jaypal:~/Temp] abc="'define('AUTH_KEY',         'r*v8]Wic;@Y4{|0EQ9Z?~W,-P}k:d{k)ylAFHm-d(tY6v?U,5{hn].e9eH%/Xmdy');'"

Используйте эту переменную в функции awk's sub.

[jaypal:~/Temp] awk -v rep="$abc" '{sub(/^define.*$/,rep,$0); print}' change.html 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...