Linux grep 和排序日志文件

标签 linux sorting logging grep

我几乎到处都看了( theretheretheretherethere ),但没有运气。

我这里有一个目录中的一堆日志文件,我需要在其中查找特定的 ID (myID) 并按日期对输出进行排序。这是一个例子:

在 file1.log 中:

2015-09-26 15:39:50,788 - DEBUG - blabla : {'id' : myID}

在 file2.log 中:

2015-09-26 15:39:51,788 - ERROR - foo : {'id' : myID}

在 file3.log 中:

2015-09-26 15:39:48,788 - ERROR - bar : {'id' : myID}

预期输出:

2015-09-26 15:39:48,788 - ERROR - bar : {'id' : myID}
2015-09-26 15:39:50,788 - DEBUG - blabla : {'id' : myID}
2015-09-26 15:39:51,788 - ERROR - foo : {'id' : myID}

我现在正在做的(而且效果很好)是:

grep -hri --color=always "myID" | sort -n

唯一的问题是使用 grep 的 -h 选项,文件名被隐藏了。我想保留文件名并保持排序。 我试过了:

grep -ri --color=always "myID" | sort -n -t ":" -k1,1 -k2,2

但它不起作用。基本上,grep 命令输出文件名后跟“:”,我想从这个字符开始对结果进行排序。

非常感谢

最佳答案

试试这个:

grep --color=always "myID" file*.log | sort -t : -k2,2 -k3,3n -k4,4n

输出:

file3.log:2015-09-26 15:39:48,788 - ERROR - bar : {'id' : myID}
file1.log:2015-09-26 15:39:50,788 - DEBUG - blabla : {'id' : myID}
file2.log:2015-09-26 15:39:51,788 - ERROR - foo : {'id' : myID}

关于Linux grep 和排序日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32805939/

相关文章:

php - UTF-8贯穿始终

linux - 如何比较两个大文件并将结果输出到第三个文件?

linux - 如何用逗号而不是空格分割列表

python - 如何使用 Python 获取字母数字列表中的最高值?

Java Lambda 表达式 : incompatible types: bad return type in lambda expression

encryption - 创建加密的日志文件

linux - 每次滚动或旋转我的日志文件时,如何使用 'newsyslog' 触发脚本?

linux - 在 Linux 64 位上交叉编译 Windows 64 位程序集

python - 根据项目是奇数还是偶数对列表进行排序

python - django 日志记录为每个请求全局设置上下文?