我正在尝试使用 sed 来匹配和替换以下性质的somedate:"12/12/2012"
字符串sed 's/somedate:"[0-9]{2}\/[0-9]{2}\/[0-9]{4}"//g'
此表达式与字符串中的任何内容都不匹配something and somedate:"12/12/2012" and something else
我做错了什么?
我正在尝试使用 sed 来匹配和替换以下性质的somedate:"12/12/2012"
字符串sed 's/somedate:"[0-9]{2}\/[0-9]{2}\/[0-9]{4}"//g'
此表达式与字符串中的任何内容都不匹配something and somedate:"12/12/2012" and something else
我做错了什么?
几点:
您将/
其用作分隔符,sed
但替换包含/
因此选择不同的分隔符,例如或将替换中的.|
转义为. 任何分隔符都可以与./
\
sed
量词{n}
是扩展正则表达式类的一部分,因此请使用该-r
选项(或-E
用于 的 BSD 衍生物sed
)或再次转义扩展功能,如\{2\}
.
g
如果您在一行上有多个匹配项,则可能需要也可能不需要该标志。这对您给定的示例没有影响,但值得指出。
您可能想要{1,2}
几天和几个月,即 1/1/2012
.
我会做:
$ sed -r 's|somedate:"[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}"||' file
something and and something else
或者通过逃避一切:
$ sed 's/somedate:"[0-9]\{1,2\}\/[0-9]\{1,2\}\/[0-9]\{4\}"//' file
something and and something else