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 很小,则输出太多。
我认为我需要的伪代码:
- Grep index1 跨越所有文件(以某种方式保留文件名)
- 只保留每个文件的最后一个条目
- 输出到 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
我是 运行 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 很小,则输出太多。 我认为我需要的伪代码:
- Grep index1 跨越所有文件(以某种方式保留文件名)
- 只保留每个文件的最后一个条目
- 输出到 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