小编Das*_*h83的帖子

获取与多个文件中的模式匹配的最后几行

我有一个应用程序将一组日志文件输出到这样的中央目录:

/tmp/experiment/log/    
??? node01.log
??? node02.log
??? node03.log
??? node04.log
??? node05.log
??? node06.log
Run Code Online (Sandbox Code Playgroud)

在每个文件中,在每个日志进程的生命周期内采取不同的措施,所以这些行看起来像这样:

prop1=5, ts=X, node01
prop2=3, ts=X, node01
prop1=7, ts=Y, node01
...
Run Code Online (Sandbox Code Playgroud)

我正在努力编写一些可以处理所有文件并输出给定​​属性的最后读取的命令,理想情况下输出如下内容:

node01, prop1=7, ts=...
node02, prop1=9, ts=...
node03, prop1=3, ts=...
Run Code Online (Sandbox Code Playgroud)

有什么建议?我开始使用grep, cut,的组合sortuniq如下所示:

$ grep -sirh "prop1" /tmp/experiment/log/ | \
   cut --delimiter=, --fields=1,4 | uniq | sort | \
   tail -n 14`  --this example had 14 log files
Run Code Online (Sandbox Code Playgroud)

但它只是部分工作,因为在某些实验中它最终会打印同一日志的多个记录并排除一些其他日志。

我继续讨论awk这个:

$ awk -F":" '/prop1/ { print $NF …
Run Code Online (Sandbox Code Playgroud)

grep awk text-processing sort cut

4
推荐指数
1
解决办法
534
查看次数

标签 统计

awk ×1

cut ×1

grep ×1

sort ×1

text-processing ×1