linux - 使用 sed、awk 和 xargs 切片 3TB 日志文件?

标签 linux sed awk xargs

我需要对几 TB 的日志数据进行切片,并且更喜欢命令行的速度。 在处理之前,我会将文件分成多个 block ,但需要删除一些部分。

格式示例如下:

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 分隔。

我只想保留每个组中的最后一行。

如果一组中只有 1 行,则应保留它。

这是预期的输出:

uuJ oPz eeOO    9   674 3
kf iiiTti oP    88  909 19
mxmx lo uUui    577 765 27878456

我如何使用 sed、awk、xargs 和 friend 来做到这一点,或者我应该只使用更高级别的东西,比如 Python?

最佳答案

awk -F '\t' '
  NR==1 {key=$1} 
  $1!=key {print line; key=$1} 
  {line=$0}
  END {print line}
' file_in > file_out 

关于linux - 使用 sed、awk 和 xargs 切片 3TB 日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585523/

相关文章:

linux - 使用打开进程的时间保存变量

linux - 从具有多字符分隔符的文本文件中提取列,即 "%$%"

bash - 获取 n 个最后记录并更改它们的特定列

linux - 在 sudo 命令中验证密码

linux - 文本文件行中的数字总和(Linux 命令终端)

regex - 如何为 libmagic 编写魔术文件以检测 srt(字幕)文件

linux - 使用linux bash替换文件中两个字符串之间的文本

linux - 有多操作系统蓝牙库吗?

c - Bash/C - 使用其他输出/文件中的值更正脚本输出中的列中的无效值

linux - 将一个文件附加到另一个文件中的一个衬里,但前提是它尚未被添加