我有这些大型的以制表符分隔的文本文件,我想按日期字段(第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