sed: текст замены со строкой, которая содержит специальные символы

Взгляните на WWW:: Механизируйте (Примеры по http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/Examples.pod). Это берет Вашу веб-страницу в качестве объекта и делает все элементы доступными с помощью методов.

Например,

$m->get("https://lists.ccs.neu.edu/bin/admindb/$listname");
$m->set_visible( $password );
$m->click;

Существуют порты для (al наименьшее) рубин и Python, также.

4
27.02.2014, 01:58
2 ответа

Лично мне нравится опция -r в sed , которая разрешает расширенные регулярные выражения, поэтому скобки не нужно экранировать:

sed -r "s#(Comment=)(.*)#\1'<span size=\"xx-large\">\2</b>'#" 3dchess.sh 

Обратите внимание, что, поскольку вы хотите использовать ' в замене, вы не можете использовать sed' s /// ', но вместо этого нужно использовать sed "s ///" . Кроме того, поскольку вам необходимо иметь / как часть шаблона, вы не можете использовать его в качестве разделителя, поэтому вам нужно выбрать другой символ. Я выбрал # , но вы можете использовать все, что захотите. Как сказал Грэм, как только вы убедитесь, что все работает нормально, добавьте переключатель -i , чтобы он редактировал файл на месте.

8
27.01.2020, 20:47
sed 's:^Comment=\(.*$\):Comment='\''<span size="xx-large">\1</b>'\': \
  $HOME/3dchess.sh

Добавьте -i, когда будете уверены, что у вас есть то, что вы хотите.

Разбиение:

s:x:y: - Это общая схема замены, в основном заменяем x на y. Очевидно, что между двоеточиями у нас гораздо больше! Обычно : - это /, но sed берет все, что идет после s, и использование / здесь означает, что в шаблоне его нужно экранировать.

^Comment= - regex-сопоставление Comment= в начале строки ( ^ ). Хорошая практика, поскольку возможно (хотя и маловероятно) получить это в другом месте, что вызовет проблемы.

\(.*$\) - соответствует всему ( .* ) до конца строки ( $ ). Окружение с \( \) создает обратную ссылку для использования позже.

'\'' - закрыть кавычки '', поставить литерал '' и снова открыть кавычки. Альтернативный метод по сравнению с методом @terdon.

Комментарий=\1 - строка замены, \1 - обратная ссылка из предыдущей строки.

'\': - закрытые кавычки, ставим литерал ', затем заключительное двоеточие.

4
27.01.2020, 20:47

Теги

Похожие вопросы