Передайте результат команды cut в curl

Итак, задача состоит в том, чтобы написать sed подстановку, которая экранирует все специальные символы (определяемые как символы []^$.*/, и я добавил \ тоже) в строке.

Подстановка может выглядеть так

s/[][\^$.*/]/\\&/g

Обратите внимание, что нам не нужно экранировать ни один из символов в наборе [...] (\ тоже воспринимается буквально, поэтому мы не можем ничего там экранировать), и что единственное, в чем мы должны быть уверены, это то, что ] находится в самом начале.

Таким образом, сценарий (переписанный как функция shell и переделанный другими способами) становится

function escape
{
    printf '%s\n' "$1" | sed 's/[][\^$.*/]/\\&/g'
}

Тестирование:

$ escape 'hello world'
hello world

$  escape '*.*'
\*\.\* 

$ escape '\/'
\\\/

$ escape '/\'
\/\\

$ escape 's/[][\^$.*/]/\\&/g'
s\/\[\]\[\\\^\$\.\*\/\]\/\\\\&\/g
6
16.11.2016, 07:10
0 ответов

Теги

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