Почему sed удаляет символ больше чем - PullRequest
1 голос
/ 09 мая 2019

Символ «меньше» удаляется, когда я запускаю команду sed.

a::b<type::value> & d
a::b<ns::type::value>& d
sed -i 's/[^:]type/changed::type/g'

приводит к

a::bchanged::type::value> & d
a::b<ns::type::value>& d

Я ожидал получить следующее:

a::b<changed::type::value> & d
a::b<ns::type::value>& d

Почему удаляется символ меньше?Как я могу сохранить это?

1 Ответ

3 голосов
/ 09 мая 2019

Символ удаляется, потому что он соответствует [^:] "не двоеточие", как часть строки, подлежащей замене. Вы можете обойти это, захватив его и положив обратно:

sed -i 's/\([^:]\)type/\1changed::type/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...