当前位置: 首页 > Linux

Linux使用grep条件搜索大文件行数等操作

时间:2023-04-06 11:53:55 Linux

1.前言最近需要查询大日志文件的时候,每次打开vim,cat之类的都会卡住,但是你需要查询有多少行数据符合条件,这真让我苦恼,下面列出一些常用的匹配查询命令。二、常用搜索命令1、grepsearchgrep参数文件名|head//从开头搜索grep参数文件名|wc-l//检查有多少行符合条件catfilename|grepparameter$//以该参数输出最后一行的内容2.例(1)根据具体参数查找行数ca??t/data/weblogs/xxx.access.log|grep"GET/pixel.jpg?"|wc-l4102386(2)部分正则查询cat/data/weblogs/em.evony.com.access.log|grep"25/Nov/2019:15:[00-59]"|wc-l120查询25/Nov/2019:15的所有数据,则15点后的分钟数为00-59(3)多个条件之间可以使用管道连接,查询满足两个条件的行数同时cat/data/weblogs/xxx.log|grep"25/Nov/2019:15:[00-59]"|grep"GET/pixel.jpg?"|wc-l120查询的行数满足条件1或条件2cat/data/weblogs/xxx.log|grep-E"25/Nov/2019:15:[00-59]|GET/pixel.jpg?"|wc-l4098135简写:grep-E"exp1|exp2|exp3"|wc-l参考:https://blog.csdn.net/lijing742180/article/details/849599633,grep是模糊查询。使用grep搜索端口号时,结果并不理想。所有的鬼和蛇都被检测到了。示例如下:netstat-anp|grep-i'80'(不是所有的进程都可以识别,非拥有的进程信息不会显示,你必须是root才能看到它。)tcp00127.0.0.1:800.0.0.0:*监听-tcp0010.17.2.50:800.0.0.0:*监听-tcp00216.66.17.189:800.0.0.0:*监听-tcp0010.17.2.50:1005010.17.13.2:33801TIME_WAIT-推荐一个更好的。查询80端口使用情况,使用命令:netstat-apn|awk'{split($4,arr,":");if(arr[2]=="80")一步打印$0}',查到的所有进程都是80端口,非常好用3.在文件中搜索ip地址1.匹配ipgrep-Eo'([^0-9]|\b)((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.){3}(1[0-9][0-9]|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])([^0-9]|\b)'xxx.log|sed-nr的/([^0-9]|\b)(([0-9]{1,3}\.){3}[0-9]{1,3})([^0-9]|\b)/\2/p'|wc-l311162752,查询每个ip出现的次数grep-E-o"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"xxx.log|sort|uniq-c299.203.87.103299.203.87.142499.203.87.145899.203.87.153前面是出现次数,后面是ip3,更精确的匹配ipgrep-E-o"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"xxx.log|wc-l329293724,模糊匹配ipgrep-E-o"([0-9]{1,3}[\.]){3}[0-9]{1,3}"xxx.log|wc-l329303095,多条件查询ip,先根据获取指定行数条件有限,然后搜索ipcatxxx.log|grep"25/Nov/2019:15:[00-59]"|grep"GET/pixel.jpg?"|grep-E-o"([0-9]{1,3}[\.]){3}[0-9]{1,3}"|wc-l1110感觉这些查ip的方法都不好,因为日志文件一直在增加,所以查的结果不一样,而且检查速度也很慢很慢,可能是文件太大了,记录在这里,永远有用