大文件按[M]M/[D]D/YYYY排序



我有这些大型的以制表符分隔的文本文件,我想按日期字段(第17个字段)对它们进行排序。问题是日期的格式是[M]M/[D]D/YYYY,这意味着没有前导零,所以日期可以是:

3/3/2013,4/17/2014,12/4/2013

是否可以使用sort命令来执行此操作?我还没能找到一个不考虑前导零的例子。

作为一个注意事项,我已经尝试重新计算日期字段从某个日期的天,然后排序。这是可行的,但是执行这个额外步骤所需的读/写需要很长时间。

如果日期在行首:

sort -n -t/ -k3,3 -k1,1 -k2,2

使用——debug选项进行排序,如果有帮助

在将其传递给sort之前,用YYYYMMDD作为每行的前缀,然后删除添加的字符。

<file.in perl -pe'
   $_ = (
      m{^(?:[^t]*t){16}(d+)/(d+)/(d+)t}
         ? sprintf("%04d%02d%02d", $3, $1, $2)
         : " " x 8
   ) . $_;
' | sort | cut -b 9- >file.out

相关内容

  • 没有找到相关文章

最新更新