[root@oldboy /]# cdoldboy
[root@oldboyoldboy]# ls
a.txt oldboy.log
[root@oldboy oldboy]# cat -n oldboy.log
1 Iam oldboy teacheri!
2 Iteach linux.
3
4 ilike badminton ball ,billiard ball and chinese chess
5 my blong is http://oldboy.blog.51cto.com
6 our site is http://www.etiantian.org
7 my qq unm is 49000448.
8
9 not 49000000448.
10 my god ,i am not oldbey,but OLDBOYi
11 gd
12 good
13 goood
14 ggd
15 ggood
16 ood
17 fgoo
18 egood
[root@oldboyoldboy]# cat -n a.txt
1 :::::::lodboy,lodord,,lodbey
2 ,,xiaofang:::machao:
(1) ^string 表示以string开头的内容
例如:[root@oldboyoldboy]# grep "^I" oldboy.log
I am oldboy teacheri!
I teach linux.
(2) string$ 表示以string结尾的内容
例如:[root@oldboyoldboy]# grep "d$" oldboy.log
gd
good
goood
ggd
ggood
ood
egood
(3) ^$ 表示空行
例如:[root@oldboyoldboy]# grep -n "^$" oldboy.log
3:
8:
(4) . “.”表示任意单个字符
例如:[root@oldboyoldboy]# grep -n "." oldboy.log
1:I am oldboy teacheri!
2:I teach linux.
4:i like badminton ball ,billiard ball and chinese chess
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
9:not 49000000448.
10:my god ,i am not oldbey,but OLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
17:fgoo
18:egood
注意:Linux系统下点可表示当前目录,也可加载文件!
(5) \ 转义字符,将特殊字符转义为普通字符
例如:[root@oldboyoldboy]# grep -n "\." oldboy.log
2:I teach linux.
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
9:not 49000000448.
eg: "\^string"表示普通字符串为"^string",即将\后的^转义为普通字符,而不是表示以string开头的字符串
(6) * 重复0个或多个*号前面的字符
例如:[root@oldboyoldboy]# grep -n "o*" oldboy.log
1:I am oldboy teacheri!
2:I teach linux.
3:
4:i like badminton ball ,billiard ball and chinese chess
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
8:
9:not 49000000448.
10:my god ,i am notoldbey,but OLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
17:fgoo
18:egood
(7) .* 匹配所有的字符
例如:[root@oldboy oldboy]# grep -n ".*"oldboy.log
1:I am oldboy teacheri!
2:I teach linux.
4:i like badminton ball ,billiard ball and chinese chess
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
9:not 49000000448.
10:my god ,i am not oldbey,but OLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
17:fgoo
18:egood
eg: ^.*表示以任意0个或多个字符开头
(8) [abcd] 匹配[]中的任意单个字符
例如: 例如: [root@oldboy oldboy]# grep -n"[abc]" oldboy.log
1:I am oldboyteacheri!
2:I teach linux.
4:i like badminton ball ,billiard ball and chinese chess
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
10:my god ,i am not oldbey,but OLDBOYi
(9) [^abcd] 排除包含a或b或c或d的内容
例如: 例如: [root@oldboy oldboy]# grep -n"[^abc]" oldboy.log
1:I am oldboy teacheri!
2:I teachlinux.
4:i like badmintonball ,billiard ball and chinese chess
5:my blong ishttp://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
9:not 49000000448.
10:my god ,i am not oldbey,but OLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
17:fgoo
18:egood
(10) a\{n,m\} 重复n次到m次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线
例如: [root@oldboy oldboy]# grep -n "o\{2,3\}" oldboy.log
12:good
13:goood
15:ggood
16:ood
17:fgoo
18:egood
a\{n,\} 重复至少n次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线
例如[root@oldboyoldboy]# grep -n "0\{3,\}" oldboy.log
7:my qq unm is 49000448.
9:not 49000000448.
[root@oldboy oldboy]# grep -n"0\{4,\}" oldboy.log
9:not 49000000448.
a\{n\} 重复n次,前一个重复的字。如果用grep/sed -r 可以去掉斜线
例如:[root@oldboy oldboy]# grep -n"0\{4\}" oldboy.log
9:not 49000000448.
a\{,m\} 重复最多重复m次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线 (,前是0-m)
例如:[root@oldboy oldboy]# grep -n"0\{,4\}" oldboy.log
1:I am oldboy teacheri!
2:I teach linux.
3:
4:i like badminton ball ,billiard ball and chinese chess
5:my blong is http://oldboy.blog.51cto.com
6:our site is http://www.etiantian.org
7:my qq unm is 49000448.
8:
9:not 49000000448. 先匹配到前面4个在匹配后后面2个
10:my god ,i am not oldbey,but OLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
17:fgoo
18:egood
注意:grep时需要对{}符号进行转义,即编码方式为\{\},但使用egrep时,无需转义
命令:egrep 或 grep -E
(1) + 重复1个或多个+号前面的字符
例如:[root@oldboyoldboy]# cat -n a.txt
1 :::::::lodboy,lodord,,lodbey
2 ,,xiaofang:::machao:
[root@oldboy oldboy]# awk -F"[:,]+" ‘{print $2}‘a.txt
lodboy
xiaofang
[root@oldboy oldboy]# awk -F"[:,]+" ‘{print $3}‘a.txt
lodord
machao
(2) ? 重复0个或1个?号前面的字符
例如:[root@oldboyoldboy]# grep -En "g?d" oldboy.log
1:I am oldboy teacheri!
4:i like badminton ball ,billiard ball and chinesechess
5:my blong is http://oldboy.blog.51cto.com
10:my god ,i am not oldbey,butOLDBOYi
11:gd
12:good
13:goood
14:ggd
15:ggood
16:ood
18:egood
[root@oldboy oldboy]# grep -En"go?d" oldboy.log
10:my god,i am not oldbey,but OLDBOYi
11:gd
14:ggd
(3) | 用或的方式查找多个字符串
例如:[root@oldboyoldboy]# find /oldboy -type f -name "*.txt" |xargs cat
:::::::lodboy,lodord,,lodbey
,,xiaofang:::machao:
(4) () 查找"用户组"字符串
例如:
[root@oldboy ~]# ifconfig eth0|sed -nr ‘2s#^.*dr:(.*) Bcast:(.*) Mask.*$#\1,\2#gp‘
192.168.93.133,192.168.93.255
原文:http://11271116.blog.51cto.com/11261116/1753659