一、前言
最近需要查詢大日志文件的時候,每次打開vim,cat之類的都會卡死,但是需要查看符合條件的共有多少行數(shù)據(jù),這顆愁死我了,下面列出一些常用的匹配查詢命令。
二、常用的搜索命令
1、grep搜索
grep 參數(shù) 文件名 | head //從頭查找 grep 參數(shù) 文件名 | wc- l //查看符合條件的有多少行 cat 文件名 |grep 參數(shù)$ //輸出以該參數(shù)結尾的行內(nèi)容
2、實例
(1)根據(jù)具體的參數(shù)來搜索行數(shù)
cat /data/weblogs/xxx.access.log |grep "GET /pixel.jpg?"|wc -l 4102386
(2)部分正則查詢
cat /data/weblogs/em.evony.com.access.log |grep "25/Nov/2019[00-59]" |wc -l 120
查詢25/Nov/2019:15時的所有數(shù)據(jù),那么15時后面的分鐘數(shù)就是00-59
(3)多個條件之間可以使用管道連接,查詢同時符合兩個條件的行數(shù)
cat /data/weblogs/xxx.log |grep "25/Nov/2019[00-59]" |grep "GET /pixel.jpg?"|wc -l 120
(4)查詢符合條件1或者符合條件2 的行數(shù)
cat /data/weblogs/xxx.log |grep -E "25/Nov/2019[00-59] |GET /pixel.jpg?"|wc -l 4098135 簡寫: grep -E "exp1|exp2|exp3" | wc -l 參考:https://blog.csdn.net/lijing742180/article/details/84959963
3、grep是模糊查詢
在使用grep搜索端口號的時候,查出來的結果不盡人意,什么牛鬼蛇神都查出來了,例子如下:
netstat -anp |grep -i '80' (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN - tcp 0 0 10.17.2.50:80 0.0.0.0:* LISTEN - tcp 0 0 216.66.17.189:80 0.0.0.0:* LISTEN - tcp 0 0 10.17.2.50:10050 10.17.13.2:33801 TIME_WAIT -
推薦個更好用的,具體查詢80端口的使用情況,使用命令:
netstat -apn | awk '{split($4,arr,":"); if(arr[2] == "80") print $0}'
一步到位,查出來的都是80端口的進程,十分好用。
============ 2019/12/5===================
三、搜索文件中的ip地址
1、匹配ip
grep -Eo '([^0-9]|)((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]|)' xxx.log | sed -nr 's/([^0-9]|)(([0-9]{1,3}.){3}[0-9]{1,3})([^0-9]|)/2/p'|wc -l 31116275
2、查詢每個ip出現(xiàn)的次數(shù)
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 -c 2 99.203.87.103 2 99.203.87.142 4 99.203.87.145 8 99.203.87.153
前面是出現(xiàn)次數(shù),后面是ip
3、更精準的匹配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|wc -l 32929372
4、模糊匹配ip
grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}" xxx.log|wc -l
32930309
5、多個條件查詢ip,先根據(jù)限定條件獲取指定的行數(shù),然后再搜索ip的個數(shù)
cat xxx.log |grep "25/Nov/2019[00-59]" |grep "GET /pixel.jpg?"|grep -E -o "([0-9]{1,3}[.]){3}[0-9]{1,3}"|wc -l 1110
感覺這些查ip的方法都差不錯,因為日志文件一直在增大,所以查出來的結果也不一樣,查的速度也比較慢,可能是文件太大了,在此記錄一下,總有用得著的時候。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11496瀏覽量
213225 -
文件
+關注
關注
1文章
578瀏覽量
25279 -
命令
+關注
關注
5文章
734瀏覽量
22792 -
日志
+關注
關注
0文章
143瀏覽量
10846
原文標題:linux使用grep條件搜索大文件的行數(shù)等技巧
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
飛凌嵌入式ElfBoard ELF 1板卡-uboot常用命令之文件系統(tǒng)命令
Linux文件內(nèi)容查詢命令
Linux關機命令詳解
logcat命令抓取日志方法

linux日志管理之journalctl命令

Linux實時查看日志的四種命令詳解

評論