grep 跨多个日志文件的最新条目

grep most recent entry across multiple log files

我是 运行 MATLAB 中的一个作业数组,它本质上是两个嵌套的 FOR 循环,但同时跨越 60 个节点(即 60 个日志文件)。我希望能够同时获得所有工作的状态。 每个日志文件输出 "index1=1 of 100" 用于外循环,并且 "index2=1 of X" 其中 X 是可变的,有时是 100,有时是 60,000。我想知道的是 index1 的状态。

> grep index1 *.out

转储所有日志文件中的所有内容。

> tail -n 100 | grep index1 *.out

更好,但如果 X 很大,则什么也得不到,如果 X 很小,则输出太多。 我认为我需要的伪代码:

  1. Grep index1 跨越所有文件(以某种方式保留文件名)
  2. 只保留每个文件的最后一个条目
  3. 输出到 STDOUT 或文件

注意:我已经编写了 MATLAB 代码,因此我还可以更改日志文件条目的 structure/appearance 以使这更容易。

如果你现在想对文件名进行编号,请尝试:

for file in *.out; do grep -H index1 $file | tail -n 1; done

或者如果您不需要:

for file in *.out; do grep index1 $file | tail -n 1; done