gpt4 book ai didi

bash - 如何从尾部的最后一行开始?

转载 作者:行者123 更新时间:2023-12-05 08:58:03 25 4
gpt4 key购买 nike

我有一个巨大的日志文件。我需要找到一些东西并打印最后一行。像这样:

tail -n +1 "$log" | awk '$9 ~ "'$something'" {print $0}' | tail -n1

但是当我执行这个命令时,tail 从第一行开始读取所有行。并运行了几分钟。

如何从最后一行开始阅读并在找到内容时停止?所以也许我不需要阅读所有行并只运行几秒钟。因为我只需要关于 $something 的最后一行。

最佳答案

请注意,您说的是 tail -n +1 "$log"tail 将其解释为:从 1 行开始读取.所以你实际上是在做 cat "$log"

您可能想说 tail -n 1 "$log"(在 1 之前没有 +)来获取最后的 n 行。

此外,如果您想获得 $something 的最后一次匹配,您可能需要使用 tac。这将向后打印文件:首先是最后一行,然后是倒数第二行……最后是第一行。

如果你这样做

tac "$log" | grep -m1 "$something"

这将打印 $something 的最后一个匹配项,然后退出,因为 -mX 打印第一个 X 个匹配项。

当然你也可以使用awk:

tac "$log" | awk -v pattern="$something" '$9 ~ pattern {print; exit}'

请注意使用 -v 将变量提供给 awk。这样您就可以避免在代码中混淆使用单引号和双引号。

关于bash - 如何从尾部的最后一行开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27232120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com