我想在 Linux 中使用 shell 脚本搜索文件中所有出现的以下格式的日期。
Apr 24 2014
最佳答案
方法 0 — 普通的旧 sed
sed -n '/\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\) [0-9]\{2\} [0-9]\{4\}/p'
最好准确指定每个可能的月份。
方法 1 - 使用 grep
扩展 RE
grep -E '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4}'
-E
开关对于使 grep
将模式解释为扩展的正则表达式是必要的,并且语法更加简单。
方法 2 — 主题变化
awk '$0 ~ /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{4}/ 1'
awk
附带开箱即用的扩展 RE!
方法 3 — 让我们利用 Perl 的强大功能。
通过Regex::Common::time可以最轻松地完成手头的任务。模块。当然,您需要安装它。
perl -MRegexp::Common -MRegexp::Common::time -nle '/$RE{time}{mdy}/ && print'
关于Unix 中日期的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357538/