我需要对几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}'
它保存最后一行,并仅当它注意到密钥已更改时才打印它。