使用 sed 在文件中执行替换

use*_*398 0 sed replace

我试图使用 sed 替换大文件中的日期。我试过 :

sed -ie 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test
Run Code Online (Sandbox Code Playgroud)

然而,什么也没发生,我的文件测试没有被修改。你知道我在这里缺少什么吗?

非常感谢。

dev*_*ull 6

默认情况下,sed使用基本的正则表达式。在BRE, ,{,,像普通字符。因此,您需要转义和:}(){}

sed -i 's/2014-[0-9]\{2\}-[0-9]\{2\}/2014-05-07/g' test
Run Code Online (Sandbox Code Playgroud)

如果使用扩展的正则表达式,您将不需要转义那些,即

sed -r -i 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test
Run Code Online (Sandbox Code Playgroud)

-r对选项sed表示ERE:

   -r, --regexp-extended

          use extended regular expressions in the script.
Run Code Online (Sandbox Code Playgroud)

此外,-e在您的示例中使用是多余的。