任何人都可以帮助搜索和替换脚本 (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'
我正在文件上尝试上述语法,但输出似乎不匹配!
任何人都可以帮助搜索和替换脚本 (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'
我正在文件上尝试上述语法,但输出似乎不匹配!
您只需要删除$
(美元符号):
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?
在我的 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 上,您可以使用-r
flag 代替-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'