一.使用场合: grep的作用是显示匹配一个或多个模式的文本行。时常会作为管道(|)的第一步,以便对匹配的数据作进一步处理。grep常用于查找和替换文本的。
二. 常用命令 zz: http://www.cnblogs.com/xuxm2007/archive/2011/01/10/1932288.html
1.grep -i 表示忽略大小写
2.grep '****' filename(s) 可以用正则式匹配多个文件搜索
比如存在二个文件demo_file demo_file1 使用grep "****" demo_*
3.用grep -w搜索整个词,而不是词中的部分字串。
4.GREP_OPTIONS高亮显示搜索的字串
通过修改GREP_OPTIONS对搜索字串高亮显示。
$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'
附关于GREP_OPTIONS:
color有三个值供选择:never、always、auto。 always 和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记, 而auto则只在输出到终端时才加上颜色。 可以在.bashrc里加上 export GREP_OPTIONS='-color=auto' 来实现高亮匹配。
具体用什么颜色,可以通过
export GREP_COLOR='a;b' #默认是1;31,即高亮的红色
来设置,其中:
a可以选择:【0,1,4,5,7,8】
0 关闭所有属性
1 设置高亮度
4 下划线
5 闪烁
7 反显
8 消隐
b可以选择:【30-37或40-47】
30 black
31 red
32 green
33 yellow
34 blue
35 purple
36 cyan
37 white
30 — 37 设置前景色
40 — 47 设置背景色
export GREP_OPTIONS='--color=auto'
export GREP_COLOR='1;31'
5.用grep -r递归搜索全部的文件
如果想查找当前目前以及其子目录的全部文件时,可以使用 -r 选项。如下例
$ grep -r "match string" *
6. 用 grep -n 在输出时显示行号,行号从第一行开始计算
7.用grep -c统计mach的行数 或者:grep "*****" filename | wc -l
8. grep -v表示invert match,类似exclude:
Usually if you want to search for string with specific keyword, you use grep.
cat /etc/passwd | grep root
What if you want to list all entry without keyword “root” ?
cat /etc/passwd | grep -v root
下面的脚本片段在shell编程里经常用到,用来判断是否已经有类或脚本在运行:
num=`ps -ef | grep -v 'grep\|/bin/bash -c' | grep 'generateIndex.sh' | awk -v pid=$$ -f $AWKFILE `
if [ $num -eq 1 ]
then
......
fi
使用ps -ef | grep -v 'grep\|/bin/bash -c' | grep "eclipse"可以把grep命令本身对应的进程排除在外。通常我们扫索会出现匹配进程与grep进程。有时为了方便通过awk操作。
通常使用ps -ef | grep -v 'grep\|/bin/bash -c' | 来将grep进程排除在外。
下面是对比结果:
zhonghua.daodao.com [~] 11/07/11 14:44:35
zhonghua@pts/ttys000 $ ps -ef | grep -v 'grep\|/bin/bash -c' | grep "eclipse"
503 552 122 0 0:48.42 ?? 6:39.70 /usr/local/eclipse/Eclipse.app/Contents/MacOS/eclipse -psn_0_229432
zhonghua.daodao.com [~] 11/07/11 14:44:43
zhonghua@pts/ttys000 $ ps -ef | grep "eclipse"
503 552 122 0 0:48.47 ?? 6:39.84 /usr/local/eclipse/Eclipse.app/Contents/MacOS/eclipse -psn_0_229432
503 805 798 0 0:00.00 ttys000 0:00.00 grep eclipse
10.大日志文件分析的参数参考 http://www.cnblogs.com/highriver/archive/2011/07/22/2113841.html