我几乎到处都没有运气,看上去(那里,那里,那里,那里和那里)。

我在这里拥有的是目录中的一堆日志文件,我需要在其中查找特定的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命令输出文件名,后跟":",我想根据该字符对结果进行排序。

非常感谢

您的日期中包含冒号,并且排序字段基于1。 尝试-k2

好的,我必须删除-n选项。 最终命令是:grep -ri --color = always" myID" | 排序-k2

尝试这个:

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}

它仍然具有-n,这意味着yyyy-mm-dd hh列将忽略年份之后的所有内容。 如果您解决此问题,由于-k2使用的是2-to-end列,而不仅仅是2列,因此-k3 -k4变得多余。

谢谢。 香港专业教育学院更新了我的答案。

@Cyrus出于某种原因,当我将输出重定向到文件时,它到处都会产生不需要的字符,即:^ [[m ^ [[K ^ [[36m ^ [[K:^ [[m ^ [[KJul 14 15 :57:47而不是这样:Jul 14 15:57:47

@vaibhavkumar:您的文件似乎包含特殊字符。 检查文件:cat -A file或cat -v file。

排序的列顺序是从1开始的,因此k1将是文件名部分。这意味着您尝试按文件名排序,然后按日志行的日期和小时排序。另外,-n表示您正在使用数字顺序,这与yyyy-mm-dd hh:mm:ss格式不能很好地配合使用(它将仅作为第一个数字(即年份)读取yyyy-mm-dd hh) 。

您可以使用:

sort -t":" -k2

请注意,我将第2列指定为开始,而将结束留为空白。末尾默认为行尾。

如果要对特定列进行排序,则需要显式设置开始和结束,例如:-k2,2。您可以使用它来对乱序列进行排序,例如-k4,4 -k2,2将按列4进行排序,并使用列2进行平局。

您还可以使用-k2,4,它将在您的日志详细信息之前在冒号处停止排序(即它将使用2015-09-26 15:39:48,788 - ERROR - bar)

最后,如果时间相同,也许您希望日志文件的顺序一致:

sort -t":" -k2,4 -k1,1

另一个解决方案,时间更长一点,但我认为它应该起作用:

grep -l"myID" file* > /tmp/file_names && grep -hri"myID" file* | sort -n > /tmp/grep_result && paste /tmp/file_names /tmp/grep_result | column -s $'\t' -t

它的基本作用是,首先通过以下方式存储文件名:

grep -l"myID" file* > /tmp/file_names

存储grep排序结果:

grep -hri"myID" file* | sort -n > /tmp/grep_result

逐列粘贴结果(使用制表符分隔符):

paste /tmp/file_names /tmp/grep_result | column -s $'\t' -t

linux grep时间排序,关于排序:Linux grep和排序日志文件相关推荐

  1. linux设置时间快1小时,LINUX CentOS系统时间与现在时间相差8小时解决方法

    GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此 ...

  2. linux如果时间等于22点,Linux下ntpdate时间同步

    1 简介 Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC). 系统时间:指当前Linux Kernel中的时间. 硬件时间:主板上有电 ...

  3. linux修改时间写入cmos,解析Linux操作系统修改时间

    如果你在你的电脑上安装了Linux操作系统,可是Linux操作系统上显示的时间是不对的,怎样才能调节好呢?机器上的时间比较复杂,有各式各样的时钟和选项等等.机器里有两个时钟.硬件时钟从根本上讲是CMO ...

  4. Linux超时时间为0,在 Linux/Mac 下为Python函数添加超时时间

    在 Linux/Mac 下为Python函数添加超时时间 收录于话题 #你不知道的 Python 71个 摄影:产品经理 产品经理亲自下厨 我们在使用 requests 这类网络请求第三方库时,可以看 ...

  5. 查询Linux充电时间,【充电】Linux学习(二)——常用的linux命令

    昨天的文件的创建.编辑.删除命令写了个教程自己记得也很清楚了,今天找了几个常见命令来学习. 切换当前路径 首先是像windows一样,我们要运行一个文件,得知道如何跳转到一个指定路径下然后再进行相应的 ...

  6. 进入路由器linux系统时间长,如何用linux做路由器限速

    如何用linux做路由器限速 linux的开源和免费使得越来越多的厂家用它来做防火墙和路由器,如海蜘蛛,飞鱼星等,其实我们也可以用linux来打造一台高性能的路由器.下面就以redhat为例(其他版本 ...

  7. linux 指定时间加3天,Linux系统的定时任务和延时任务

    1.系统延时任务 at now+1min##延时1分钟 at> touch file{1..10} at> job 2 at Sun Jan 20 02:07:00 2019 监控/mnt ...

  8. linux 启动tomcat 怎么显示日志文件,随着LINUX的启动,打开一个终端显示TOMCAT的日志文件,请问如何做到?...

    FC7下已配置好TOMCAT 5能自动随系统的启动而启动! 我在FC7系统启动完成后自动弹出一个终端,并其中执行命令tail -f rootDownloadjakarta5.0.28logscatal ...

  9. 关于linux校准时间

    hwclock --show 显示硬件时间 hwclock  -w   根据系统时间设置硬件时间 很完整的文章,其中ntpdate设置时间会造成时间跳跃,不安全,而且只能一次性,所以一般还需要搭配cr ...

  10. Linux系统时间同步方法小结

    原文装载自:https://www.cnblogs.com/ibnode/p/3573302.html 在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系 ...

最新文章

  1. Bitcoin ABC和区块上限——通过技术实现更大的区块
  2. BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
  3. kingshard--一个支持sharding的MySQL Proxy项目
  4. SIGIR 2019 开源论文 | 用户注意力指导的多模态对话系统
  5. 丁香园 武汉 神童_杭州、武汉、成都哪个城市更适合程序员发展
  6. Stupid cat Doge (分形图)
  7. python datetime
  8. 如何在centos上安装epel源
  9. 一瞬间-自定义一个漂亮的日期控件
  10. javascript学习笔记(十九) 节点的操作
  11. keil窗口显示不全_使用Keil语言的嵌入式C编程教程(下)
  12. MTK7620A FLASH W25Q256学习
  13. python爬取中国大学排名_Python爬取中国大学排行榜
  14. 女性程序员你需要注意
  15. 各种字符串Hash函数比较
  16. 显卡---显卡驱动---CUDA---Cudnn
  17. python爬取路况信息_高德实时路况数据获取
  18. 一款内网横向渗透辅助工具
  19. jaspersoft 报表设计器简单的使用(二)
  20. 华为破除魔咒:任正非的自我革命

热门文章

  1. 匆忙推出的Mobileme没有得到广泛的认可,用户认为它速度缓慢、价格昂贵还总是出错
  2. 短信发送活动页的短链打开app,app引流
  3. 大话IT 满大街跑的都是月薪上万的小程序员 zt
  4. 计算机专业卖多少寸的笔记本,现在笔记本电脑显示屏的主流尺寸是多大?
  5. linux 处理挖矿
  6. C# 用zip,批量压缩文件,并打包下载
  7. 高级shell扩展---getopts命令
  8. 【附源码】Java计算机毕业设计网上拍卖系统(程序+LW+部署)
  9. 虞小约的Java之旅第一天(Java的基本格式)
  10. 程序员炫技:用c语言开发对对碰游戏,你打几分?