任何人都可以帮助搜索&替换脚本(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'
我在文件上尝试上述语法,但输出似乎不匹配!
答案 0 :(得分: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?
答案 1 :(得分:1)
在我的Mac上,即使这个sed也不起作用:
sed 's/Feb\|Mar//g'
甚至不是这样:
sed 's/Feb|Mar//g'
然而,当我使用扩展的正则表达式开关-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上,您可以使用-r
标志代替-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'