我正在尝试使用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
我做错了什么?
答案 0 :(得分:3)
几点:
您使用/
作为sed
的分隔符,但替换包含/
,因此请选择其他分隔符,例如|
或转义/
用\
代替。任何分隔符都可以与sed
一起使用。
量词{n}
是扩展的正则表达式类的一部分,因此使用-r
选项(或-E
用于sed
的BSD衍生物)或再次逃避扩展功能,如\{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