Как сопоставить двойные и одинарные кавычки одновременно с командой sed? - PullRequest
0 голосов
/ 08 мая 2020

Я хочу заменить строку строковой переменной . Строка состоит из '"+a+"' (это именно строка, лишних кавычек не было. Например, строка "foo" и строка foo мой пример - второй foo)

Можно ли изменить это с помощью команды sed?

Я хочу заменить это переменной. Я пробовал это:

sed "s#'"+a+"'#${var}#" 
sed "s#'\"+a+\"'#${var}#" 
sed "s#'[\"]+a+[\"]'#${var}#"

Спасибо за любые ответы!

Ответы [ 3 ]

1 голос
/ 08 мая 2020

Возможно также использовать переменную для поиска.

var=_FOO_
search=$'\'"+a+"\''
echo "mama${search}papa" | sed  "s#${search}#${var}#"

Вывод

mama_FOO_papa

$' ' - это bash стиль цитирования.

search=$'\'"+a+"\'';  echo "$search"

Выход

'"+a+"'
0 голосов
/ 08 мая 2020

У вас опечатка в выражениях sed - вам не хватает второго символа + после a:)

$ var=" else "
$ echo "something'\"+a+\"'cool" | sed "s#'\"+a+\"'#${var}#"
something else cool
0 голосов
/ 08 мая 2020

Возможно использование BSD sed (например, macOS): sed "s/\'\"\+\a\+\"\'/$var/g"

И это некрасиво, но работает (GNU sed): sed "s/[\'][\"][\+]a[\+][\"][\']/$var/g"

...