bash - 使用 grep 命令但仅用于文件的最后几行?

标签 bash shell grep tail

如何只对文件的“尾部”执行 grep?

我正在尝试运行这个命令:

grep 'TEST COMPLETE' -L *.log

TEST COMPLETE 出现在最后几行,这个命令列出文件夹中所有还没有完成测试的文件(因为 -L)。虽然日志非常大,但 grep 非常慢。

另一方面,我可以在尾部用管道传递 grep。 grep 几乎是即时的:

tail *.log | grep 'TEST COMPLETE'

但是我不能使用 -l-L 参数,因为我现在正在 grep 管道输入而不是文件。所以使用列表文件参数运行它:

tail *.log | grep 'TEST COMPLETE' -L

只会输出:(标准输入)

有什么方法可以让 grep 搜索最后 10 行或类似的内容?

最佳答案

你可以在 for 循环中完成:

for log in *.log; do
   if ! tail "$log" | grep -q 'TEST COMPLETE'; then
      echo "$log"
   fi
done

关于bash - 使用 grep 命令但仅用于文件的最后几行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55733878/

相关文章:

linux - 获取最新的文件名,其中扩展名区分大小写

string - Bash 将数据集拆分为每对 1 行

linux - 每 k 秒/毫秒/的平均 tcpdump

mysql - $ mysql> connect ...(来自 bash)它有什么作用?

bash - grep (fgrep) bash 精确匹配行尾

bash - 如何通过单独的 grep 过滤器发送 stderr 和 stdout?

regex - 在 grep 中使用星号

shell - 在 Ubuntu 中编写只能由 sudo 用户运行的 shell 脚本

linux - Shell脚本获得 super 用户权限而不以sudo身份运行

bash - 使用 Grep(或任何其他命令行工具)来计算包含不同模式的行