LINUX.ORG.RU

Заменить sed`ом слово «кот» на «кошка» не вводя символы « »

 


0

1

Есть строчка

«кот», «котлета», «терракотовый», (скот), (кот);

Надо слова

«кот» и (кот)
заменить на
«кошка» и (кошка)
не используя в регексе « »

Пробовал

sed 's/\Wкот\W/кошка/g'
, естественно кавычки стираются. Как в sed`e разделить символы поиска и замены?

★★★★★

Последнее исправление: steemandlinux (всего исправлений: 2)

Нужный тебе термин для гуглинга: «backreference». Он позволяет найденный кусок (левая и правая скобка/кавычка) скопировать в результирующую строку.

kvap
()
Ответ на: комментарий от steemandlinux

Тильда - альтернативный разделитель, они разные могут быть для лучшей читаемости.
Остальное - гнутые штуки. Можно было сделать \bкот\b.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

а ~ это тоже границы регекса?

Границы регэкса в данном случае — символ, стоящий после команды s. Возможность менять этот символ очень удобна, в частности позволяет избежать необходимости экранирования «/» и получения часткола вроде «\/\/» одним только выбором другого символа, в примере выше это «~».

bormant ★★★★★
()
Ответ на: комментарий от bormant

Да, мне он тоже больше по душе, частокол читать очень трудно.

steemandlinux ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.