首页 > 解决方案 > awk - 仅从文本文件中过滤特定格式的日期

问题描述

我在 macOS 上有一个包含多行文本的 .txt 文件。我想只过滤日期并将它们按出现的顺序逐行保存在新的文本文件中。

但是,我对所有日期不感兴趣,只对那些完整的日期感兴趣,看起来像 02/03/2019,以及天数低于 13 的日期,即 01...12。

然后,我想删除那些日期和月份数字相同的日期,例如 01/01/2019 和 02/02/2019 等。

如何awk在 bash 中使用或类似的软件来实现这一点?

标签: bashmacosawk

解决方案


如果 perl 是一个选择:

perl -ne 'print if m:(\d\d)/(\d\d)/(\d\d\d\d): && $1 < 13 && $1 != $2' dates.txt >newdates.txt

这假定这种格式/dd/mm/yyyy

请注意,我使用的是m: :符号而不是通常/ /的正则表达式匹配。因此我不需要逃避/日期中的斜线。


推荐阅读