我试图使用 sed 替换大文件中的日期。我试过 :
sed -ie 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test
Run Code Online (Sandbox Code Playgroud)
然而,什么也没发生,我的文件测试没有被修改。你知道我在这里缺少什么吗?
非常感谢。
默认情况下,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
在您的示例中使用是多余的。