我有一个包含许多日期的文件,写作" 2014年1月1日和#34;。如何使用awk或grep按时间顺序(在文件中对它们进行排序)从文件中确定所有这些日期?
我基本上想要: grep" $ a%d,%d" file.txt的 但是,我想让$ a = {1月,...,12月}。
基本上,最后,我想要一个文件:
June 1, 2010
June 5, 2010
...
答案 0 :(得分:1)
由于只有12个月的名称,因此将它们硬编码到表达式中并不是不合理的。请记住,我使用的是...
,但您应该使用实际的月份名称。
egrep -o '(January|February|March|...|December) [0-9]+, [0-9]+' Input.txt
答案 1 :(得分:1)
$ sort -M /tmp/dates | awk -v month=June '$0 ~ month {print $1, $2, $3}'
GNU sort提供--month-sort
标志。鉴于以下输入:
December 31, 2014
June 5, 2010
December 31, 2013
June 1, 2010
January 1, 2009
sort命令会将行排序为合理的按日期排序的顺序。如果你必须进行二次排序,你也可以这样做。
同时,您可以使用awk命令将每一行与所需月份(存储在月变量中)进行匹配,然后仅打印每个匹配记录中的日期字段。
在我的系统上,根据上面的输入,我在month=June
:
June 1, 2010
June 5, 2010