按日期列对文本文件进行排序

按日期列对文本文件进行排序

如何在下面的示例中按日期正确对文本文件进行排序?问题是这sort -k1,1实际上不起作用,而且我也不能使用点符号,sort -k1.6,1.9 -k1.4,1.4 -k1.1,1.2因为表单没有固定长度。我想出了这个恐怖的东西

awk '{split($1,a,".");print a[1],a[2],a[3],$2}' test.txt | sort -k3,3 -k2,2 -k1,1 | awk '{print  $1 "." $2 "." $3,$4}'

虽然它有效,但我不喜欢它的复杂性。这可以简化吗,最好只用sort

25.3.2020   26698
24.3.2020   22600
23.3.2020   19624
22.3.2020   17377
21.3.2020   15584
20.3.2020   13704
4.3.2020    407
3.3.2020    340
2.3.2020    262
1.3.2020    211
29.2.2020   200
28.2.2020   193
27.2.2020   170
26.2.2020   135
11.2.2020   74
10.2.2020   72
9.2.2020    64
8.2.2020    62
7.2.2020    62
6.2.2020    56
5.2.2020    53
2.2.2020    43
1.2.2020    38
31.1.2020   37
30.1.2020   34
28.1.2020   28
27.1.2020   20

答案1

尝试:

sort -n -t. -k3,3 -k2,2 -k1,1 test.txt
  • -n按数字排序
  • -t .使用点字符作为字段分隔符

相关内容