grep博大精深,本文仅持续更新在工作中频繁使用的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
获取不是空行和注释的内容:
grep
^[^
#] file1
grep
-
v
"^#"
|
grep
-
v
"^$"
file1
grep
-Ev
"^#|^$"
file1
获取指定内容:
grep
"05/Mar/2013"
origin.log > 0305.log
颜色显示:
grep
--color
grep
-E
提取统计日志中,关于http code的4xx,5xx和0结尾的行
awk
'{count[$2]+=$1};END{for (c in count) print c, count[c]}'
*.stat |
sort
|
uniq
|
sort
-nr |
awk
'$1>100 {print $0}'
|
grep
-E
'(^[0-9]+ [4-5][0-9][0-9]$)|(^[0-9]+ 0$)'
|
more
46255 0
967 504
218 502
2 403
1 503
grep
-o 仅显示匹配的字符
获取IP
grep
-o -E
"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
grep
-Po 使用 perl 的正则表达式,典型应用是零宽断言,以下是示例:
获取字符串:access.xxxx.log 中间的 xxxx,即:在
"access."
和
".log"
中间的字符串
# echo '/var/log/nginx/access.www.test.com-443.log' |grep -Po '(?<=access.).*(?=.log)'
www.
test
.com-443
进一步只匹配
".com"
结尾的字符串:
# echo '/var/log/nginx/access.www.test.com-8080.log' |grep -Po '(?<=access.).*.com(?=-\d+.log|.log)'
www.
test
.com
# echo '/var/log/nginx/access.www.test.com.log' |grep -Po '(?<=access.).*.com(?=-\d+.log|.log)'
www.
test
.com
打印文件名:
grep
--color -H
"^wget"
/home/web/task/crontab_
*.sh
获取url的最右一列的名字
for
i
in
$(
grep
"^wget"
/home/web/task/crontab_
*.sh |
cut
-d
' '
-f2);
do
echo
${i
##*/};done |sort -n |uniq
查找某个目录下包含某个字符文件:
# grep 'svn_url_port_filter' -nr .
.
/lib/svn
.php:21: $url = svn_url_port_filter($url);
.
/lib/svn
.php:71: $url = svn_url_port_filter($url);
.
/lib/svn
.php:80: $url = svn_url_port_filter($url);
.
/lib/svn
.php:229:
function
svn_url_port_filter($url)
或者
# find . -exec grep -nH 'svn_url_port_filter' {} \;
.
/lib/svn
.php:21: $url = svn_url_port_filter($url);
.
/lib/svn
.php:71: $url = svn_url_port_filter($url);
.
/lib/svn
.php:80: $url = svn_url_port_filter($url);
.
/lib/svn
.php:229:
function
svn_url_port_filter($url)
|
本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1659733,如需转载请自行联系原作者