vim 和 sed 之间的搜索和替换不一致

vim 和 sed 之间的搜索和替换不一致

使用 Ubuntu 12.04 和 vim 2.22.0,为什么在 vim 中我应该使用:

:9s/\d\+/1/

将所提及行的第一位数字更改为 1,但无法使用 sed 执行相同的操作:

sed -i '9s/\d\+/1/' /home/file/foo

我仍然没有收到任何错误,文件中也没有任何更改。vim 和 sed 命令的功能之间是否存在不一致?

答案1

sed 和 vim 并不相关(虽然有点相关,但关系并不大)。它们的替换命令类似,但远非完全相同。它们都使用基本正则表达式,但 vim 有其扩展,而 GNU sed 有其他扩展。

\d在 vim 中匹配数字,在 GNU sed 中匹配d。要在 sed 中匹配数字,请使用[[:digit:]][0-9](这些在 vim 中也有效)。

\+也是 vim 和 GNU sed 中的扩展。匹配一个或多个的标准方法是使用\{1,\}

相关内容