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

Ami*_*mir 1 vim command-line bash search sed

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

:9s/\d\+/1/
Run Code Online (Sandbox Code Playgroud)

将上述行的第一个数字更改为 1,但无法将其与 sed 一起使用:

sed -i '9s/\d\+/1/' /home/file/foo
Run Code Online (Sandbox Code Playgroud)

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

gei*_*rha 6

sed 和 vim 不相关(很好,但它很远)。它们的替换命令相似,但远非相同。它们都使用基本的正则表达式,但 vim 有它的扩展,而 GNU sed 有其他扩展。

\d在 vim 中匹配一个数字,在 GNU sed 中它匹配一个d. 要匹配 sed 中的数字,请使用[[:digit:]][0-9](这些也适用于 vim)。

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