我发现看着我的日志;对git的提交可能有或没有名称和姓氏;这意味着如果我使用-k排序,字段的位置可能不正确。
例如,如果我得到一个提交到各种存储库的文件,我的标准格式是
commit - name - surname - date - repo name
我用sort -k 4对它们进行排序,所以我按日期排序(这就是我需要的)/
问题是,有时提交者名称被通用名称替换(不确定原因,我不管理存储库);所以最终跳过一个字段,日期现在是第3个位置,而不是第4个位置。
这导致大多数提交正确排序,但是那些日期位于第3个位置的提交最终位于底部,所以我没有按时间顺序排序。
由于我无法控制回购投掷给我的东西,有没有办法告诉排序,按日期排序,而不指定哪一个是具有日期的字段? 或者我应该使用与排序不同的东西吗?
答案 0 :(得分:0)
你能不能只检查线路上的字段数量?即从最后一个元素而不是从第一个元素开始计算?
虽然sort
可能没有足够的功能来从行尾指定密钥,因此您可能不得不求助于一个小的awk脚本,以根据每个中的记录数找到正确的排序键。线。
像;
# Reorder fields to be date - reponame - commit - name - surname(optional)
awk '{
if (NF==4) print $3, $4, $1, $2;
else print $4, $5, $1, $2, $3;
}' file.log | sort -k1