sed为什么要删除大于符号

时间:2019-05-08 21:43:36

标签: regex unix sed str-replace

运行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 个答案:

答案 0 :(得分:3)

该符号被删除,因为它与[^:]“不是冒号”匹配,作为要替换的字符串的一部分。您可以通过捕获并放回它来绕开它:

sed -i 's/\([^:]\)type/\1changed::type/g'