2013-04-25 448 views
0

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

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' 

我想在文件上面的语法,但输出似乎不匹配!

回答

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? 
+0

伟大工程在Redhat然而,不在OS X上。 – Dev 2013-04-25 23:12:09

+0

检查Mac os的其他答案。有趣的是,你用'linux'标记了这个问题..我除了删除美元之外没有更改你的代码.... :) – Kent 2013-04-25 23:15:34

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' 
+0

他用'linux'标记了这个问题 – Kent 2013-04-25 22:08:44

+0

@Kent:我的回答是还包括Linux部分。如果一个答案在其他* nix版本上也有效,这样会更好吗? – anubhava 2013-04-25 22:11:01

+0

只是好奇,我没有苹果操作系统的经验。有多少Mac用户会安装GNU的东西?依你的意见? > 50%? – Kent 2013-04-25 22:11:41

相关问题