Подтвердить что ты не робот

Как избежать одиночной кавычки в sed?

Как избежать одиночной кавычки в выражении sed, которое уже окружено кавычками?

Например:

sed 's/ones/one's/' <<< 'ones thing'
4b9b3361

Ответ 1

Цитата sed коды с двойными кавычками:

    $ sed "s/ones/one's/"<<<"ones thing"   
    one thing

Мне не нравятся экраны с сотнями обратных косых черт - болит глаза. Обычно я делаю так:

    $ sed 's/ones/one\x27s/'<<<"ones thing"
    one thing

Ответ 2

Один трюк состоит в том, чтобы использовать конкатенацию строки оболочки из соседних строк и избегать внедренной цитаты, используя экранирование оболочки:

sed 's/ones/two'\''s/' <<< 'ones thing'

two thing

В выражении sed есть 3 строки, которые затем сшивают вместе:

sed 's/ones/two'

\'

's/'

Надеюсь, что это поможет кому-то еще!

Ответ 3

Лучший способ - использовать $'some string with \' quotes \''

например:

sed $'s/ones/two\'s/' <<< 'ones thing'

Ответ 4

Я знаю, что это будет звучать как полицейский, но я никогда не смог бы заставить sed работать, когда в строке были одиночные и двойные кавычки. Чтобы помочь любым новичкам, таким как я, которые испытывают проблемы, один из вариантов заключается в разделении строки. Мне пришлось заменить код в более чем 100 файлах index.hmtl. Строки имели как одиночные, так и двойные кавычки, поэтому я просто разделил строку и заменил первый блок на <!--, а второй - с -->. Это создало беспорядок моих файлов index.html, но оно сработало.