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 命令的功能之间有任何不一致吗?
sed 和 vim 不相关(很好,但它很远)。它们的替换命令相似,但远非相同。它们都使用基本的正则表达式,但 vim 有它的扩展,而 GNU sed 有其他扩展。
\d在 vim 中匹配一个数字,在 GNU sed 中它匹配一个d. 要匹配 sed 中的数字,请使用[[:digit:]]或[0-9](这些也适用于 vim)。
\+也是 vim 和 GNU sed 的扩展。匹配一个或多个的标准方法是使用\{1,\}。