如何打印下一个输出的最后三个日期:
User;month/day/year
user1:01/01/2015
user1:01/01/2015
user1:01/01/2015
...
user1:01/09/2018
user1:01/08/2018
user1:01/07/2018
user1:01/04/2016
user1:01/02/2016
user1:01/01/2016
在本例中(2018 年日期)
编辑:
我有 awk 的下一个命令:
awk '{ print $1":" substr( $0,285,291 )}' $file_input | awk '{ print $1}' | sort -n -r
期望的输出:
user1:01/09/2018
user1:01/08/2018
user1:01/07/2018
答案1
在这里,先对YYYY
部分进行排序,然后按mm/dd
词法对部分进行排序。
这将分别是第二个分隔字段的第 7个到第 10个字符和第1 个到第 5 个字符:
,因此:
<file sort -r -b -t: -k2.7,2.10 -k 2.1,2.5 | head -n 3
(这里添加一个-b
以允许(并忽略)周围的空白:
)
答案2
考虑使用这样的排序:
sort -rt/ -k3n -k1.11n -k2n < input | head -3
这将基于 3 个关键字段和/
分隔符对行进行排序:首先是年份,然后是月份(字段 1,跳过用户名和冒号),然后是字段 2——全部按数字排序。仅输出tail -3
最后(最新)3 行/日期。