查找文件并在尾部搜索

查找文件并在尾部搜索

以下工作符合预期。

find /opt/ -name "somefile.out" -exec grep 'Connection refused' {} \; | more

但是如果我只想在找到的文件的尾部搜索,我不能像这样添加尾部或尾部 -100......

find /opt/ -name "somefile.out" -exec grep 'Connection refused' tail {} \; | more

搜索最后几行文本的最佳方法是什么?

答案1

这似乎对我有用,但不确定这是否是最好的方法:

find . -name '*.log' -exec tail {} \; | grep GET | more

最重要的是按照更正确的顺序执行命令。

祝你好运!

答案2

您的问题可能已经在这里得到解答了:https://stackoverflow.com/questions/307015/how-do-i-include-a-pipe-in​​-my-linux-find-exec-command

不过,你可以使用 perl 来完成 tail 和 grep 的工作(注意:由于其令人惊讶的复杂性,这种说法有点开玩笑的味道,但它应该可以工作):

find /opt/ -name "somefile.out"  -exec  perl -ne 'push @a, $_; @a = @a[@a-NUMBEROFLINES..$#a]; END { foreach (@a) { print if /PATTERN/ } }' '{}' \;

如果您不想在看到某个“页脚”后扫描某个确定的行范围,那么 perl 可以帮您轻松实现这一点:

perl -ne 'print if /footer/ .. eof() and /PATTERN/'

相关内容