Я хочу задать 2 вопроса о sed.Разделительные команды sed sed 's ///' и sed "s ###"
Например, когда я пытаюсь поместить строку в sed, которая содержит специальный символ, подобный (. \ N *. +), И sed не может работать должным образом.
set a = ".\n*.\+"
set input = ".\n*.\+adsdfasdf"
Затем выполните:
echo "$input" | sed 's/'$a'/hi/g' # It will give: sed: No match
но
echo "$input" | sed "s#${a}#hi#g" # It will run but not true
Мои вопросы:
- В чем разница между этими командами: СЭД 's ///' и sed "s ###"
- Как обрабатывать ввод так же, как чисто строку?
оба дают «hi» как результат для меня в оболочке bash и GNU sed 'a =". \ N *. \ + "; ". \ П * \ + adsdfasdf" вход =; echo "$ input" | sed 's /' $ a '/ hi/g'' .... см. https://stackoverflow.com/documentation/sed/1096/substitution#t=201702190808137883167 для получения некоторых объяснений при использовании разных разделителей. – Sundeep
afaik, нет способа сказать sed, что строка должна рассматриваться как буквальная, вам придется избегать метасимволов, а также используемого разделителя – Sundeep