使用sed
,我可以将一个项目替换为另一个项目。 E.g:
sed -i "s/a/b/g" file
然而,有时候我不希望这种替代发生。如何确保更换仅在以下时间发生:
{
。}
。答案 0 :(得分:1)
这是一种方式:
% echo '2a: {a} a cat.' | sed -e 's/\([^{[:alnum:]]\)a\([^}[:alnum:]]\)/\1b\2/g'
2a: {a} b cat.
在替换中存储和使用的\(...\)
表单组引用\1
,\2
,... \9
。
答案 1 :(得分:0)
sed -r -e "s/([^0-9a-zA-Z\{])a([^0-9a-zA-Z\}])/\1b\2/g"
([^0-9a-zA-Z\{])
- 是第一个匹配的符号组(当前情况下长度为1)。不是数字(0-9
),不是字母(a-zA-Z
)而不是{(\{
)。
([^0-9a-zA-Z\}])
- 是第二个匹配的组,就像第一个一样。
如果我们匹配这些序列,我们会将其替换为第一组(\1
),b
和第二组(\2
)。