我需要对几TB的日志数据进行切片,并希望使用命令行的速度。
在处理之前,我会将文件分割成块,但需要删除一些部分。
下面是一个格式示例:

uuJ oPz eeOO    109 66  8
uuJ oPz eeOO    48  0   221
uuJ oPz eeOO    9   674 3
kf iiiTti oP    88  909 19
mxmx lo uUui    2   9   771
mxmx lo uUui    577 765 27878456

前3个字母数字字符串之间的间隙是空格。之后的一切都是标签。用\n分隔线。
我只想保留每组的最后一行。
如果一组只有一行,就应该保留。
以下是预期输出:
uuJ oPz eeOO    9   674 3
kf iiiTti oP    88  909 19
mxmx lo uUui    577 765 27878456

我该如何处理sed、awk、xargs和friends,还是应该使用更高级别的python?

最佳答案

试试这个:

awk 'BEGIN{FS="\t"}
    {if($1!=prevKey) {if (NR > 1) {print lastLine}; prevKey=$1} lastLine=$0}
    END{print lastLine}'

它保存最后一行,并仅当它注意到密钥已更改时才打印它。

08-27 20:26