我有一个包含一堆字段的文件:
12345 some values here
67890 other values maybe
12345 different values here
...ETC。
我想显示每个键的最新行。输出应如下所示:
67890 other values maybe
12345 different values here
在输出中,键应该是唯一的,值(该行的其余部分)应该是该键的最新值。我并不特别关心键的结果顺序。
我如何使用 GNU(或 POSIX)工具来做到这一点?
这将保存数组中每一行的数据,
data
在第一个字段上键入。当找到具有相同第一个字段的另一行时,该键的旧数据将被简单地覆盖。最后输出数组中的所有数据。
更高效的内存:
在这里,我们首先使用稳定排序算法 (
-s
) 仅在第一列对文件进行排序。使用稳定的排序算法意味着具有相同键的行在 的输出中不会改变相对于彼此的位置sort
。然后
awk
代码只需要跟踪“当前密钥”和该密钥的最新数据,并在密钥更改时(以及最后)打印该数据。我会反转文件,在第一次看到时输出每一行,然后反转输出