0

任何人都可以帮助搜索和替换脚本 (sed) 以匹配 2009 年 2 月 24 日的日期并将其替换为空格吗?

 sed 's/ \(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Aug\|Sep\|Oct\|Nov\|Dec\) [0-9][0-9], [2][0-9][0-9][0-9]$//g'

我正在文件上尝试上述语法,但输出似乎不匹配!

4

2 回答 2

3

您只需要删除$(美元符号):

sed 's/ \(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Aug\|Sep\|Oct\|Nov\|Dec\) [0-9][0-9], [2][0-9][0-9][0-9]//g'

用你问题中的句子进行测试:

kent$  echo "to match a date Feb 24, 2009 and replace it with a white space?"|sed 's/ \(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Aug\|Sep\|Oct\|Nov\|Dec\) [0-9][0-9], [2][0-9][0-9][0-9]//g' 
to match a date and replace it with a white space?
于 2013-04-25T21:54:24.070 回答
1

在我的 Mac 上,即使这个 sed 也不起作用:

sed 's/Feb\|Mar//g'

甚至没有这个:

sed 's/Feb|Mar//g'

但是,当我使用扩展的正则表达式 switch 时-E,事情开始像这样:

sed -E 's/ (Jan|Feb|Mar|Apr|May|Jun|Aug|Sep|Oct|Nov|Dec) [0-9][0-9], [2][0-9][0-9][0-9]//g'

在 Linux 上,您可以使用-rflag 代替-E

sed -r 's/ (Jan|Feb|Mar|Apr|May|Jun|Aug|Sep|Oct|Nov|Dec) [0-9][0-9], [2][0-9][0-9][0-9]//g'
于 2013-04-25T22:02:01.550 回答