我有一个文件,其中包含单个记录的多个条目。例如:
abc~20160120~120
abc~20160125~150
xyz~20160201~100
abc~20160205~200
xyz~20160202~90
pqr~20160102~250
第一列是记录名,第二列是日期,第三列是该特定日期的条目。
现在我想在我的文件中显示的是特定记录的最新条目。这就是我的输出应该是什么样子
abc~20160205~200
xyz~20160202~90
pqr~20160102~250
任何人都可以帮助使用shell脚本吗?请记住,我有太多记录需要先根据记录名称进行排序,然后根据日期为每条记录取出最新记录。
答案 0 :(得分:2)
按记录名称和日期反转对行进行排序,而不是使用排序的-u
唯一标志仅输出每条记录的第一个条目:
sort -t~ -k1,2r < input-file | sort -t~ -k1,1 -u
答案 1 :(得分:-1)
使用awk
,您可以避免对大文件进行排序,并使用单个命令获取结果:
awk -F '~' '$2>a[$1]{a[$1]=$2; r[$1]=$0} END{for (i in r) print r[i]}' file
<强>输出:强>
abc~20160205~200
pqr~20160102~250
xyz~20160202~90