^ 行首定位符
$ 行尾定位符# mkdir /test
# cd /test[root@teacher test]# cp /etc/passwd ./# grep "root" passwd
root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@teacher test]# grep "^root" passwd
root:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "bash$" passwd
root:x:0:0:root:/root:/bin/bash
# vim passwd
添加 ro:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "^ro" passwd
root:x:0:0:root:/root:/bin/bashro:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "^ro:" passwdro:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "sh$" passwd
----------------------
. 匹配换行字符之外的任意单个字符* 匹配前面的字符,有0个或多个[root@teacher test]# vim s1
abc
accadcqbcwbcebc[root@teacher test]# grep "a.c" s1
abcaccadc[root@teacher test]# grep "..c" s1
abcaccadcqbcwbcebc# grep "a*bc" s1
abcqbcwbcebc[root@teacher test]# grep --color "a*bc" s1
abcqbcwbcebc# grep --color ".*:" passwd
-----------------------------[...] 匹配字符组内任意一个字符[0-9] 0123456789[a-z] 小写字母[A-Z] 大写字母[a-Z] 所有字母[a-Z0-9] 字母或数字[^...]取反,非字符组里的任意一个字符[^0-9] 非数字[^a-Z] 非字母 # grep "^[a-z][a-z][a-z]" passwd[root@teacher test]# grep --color "^[a-z][a-z][a-z]:" passwd
# grep "x:[1-9][0-9]:" passwd --color
# grep ":[1-9][0-9]:[0-9]" passwd --color
-----------------------------\ 屏蔽元字符的含义 meta# vim s1
abc
accadcqbcwbcebce.c[root@teacher test]# grep "e.c" s1
ebce.c[root@teacher test]# grep "e\.c" s1e.c# cp /etc/shadow ./
[root@teacher test]# grep '\$' shadow ----------------------------------\(\) 标签,保存标签里面的字符,使用\1-9调用,最多9个标签,排列顺序,从左向右。\(1\)...\(2\)...\(3\) \1 \2 \3# grep "\(root\).*\1" passwd --color
root:x:0:0:root:/root:/bin/bashro:x:0:0:root:/root:/bin/bashYou have new mail in /var/spool/mail/root[root@teacher test]# grep "\(root\).*\1.*\1" passwd --colorroot:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "\(root\).*\(0\).*\2.*\1" passwd --colorroot:x:0:0:root:/root:/bin/bashYou have new mail in /var/spool/mail/root[root@teacher test]# vim a1
root,/:tom,,:root:...tom:,,,mike:,,,root,,,:mike,,:mike,,:tom,,:root
# grep "\(root\).*\(tom\).*\1.*\2.*\(mike\).*\1.*\3.*\3.*\2.*\1" a1
---------------# vim s1abc
accadcqbcwbcebce.cmike and tom把tom和mike的位置对调过来 :1,$s/\(tom\) and \(mike\)/\2 and \1/g# vim s1
abcaccadcqbcwbcebce.cmike and tomaaabcccd11123334[root@teacher test]# grep "\(.\)\1\1" s1
aaabcccd11123334----------------------------
x\{m\} x(任意字符) 有m个x\{m,\} x(任意字符) 有>m个x\{m,n\} x(任意字符) 有m~n个[root@teacher test]# grep "^[a-z][a-z][a-z]:" passwd --color
# grep "^[a-z]\{3\}:" passwd --color
[root@teacher test]# grep "^[a-z]\{3,\}:" passwd --color
# grep "^[a-z]\{3,4\}:" passwd --color
------------------------------
\< 词首定位符\> 词尾定位符# vim passwd
添加roooot:x:0:0:root:/root:/bin/bashrootooo:x:0:0:bin/bash:arooootbc[root@teacher test]# grep "^\<root" passwd --color
[root@teacher test]# grep "^\<ro" passwd --color
[root@teacher test]# grep "^\<ro\>" passwd --color
ro:x:0:0:root:/root:/bin/bash[root@teacher test]# grep "\<root\>" passwd --color
[root@teacher test]# grep "ooot\>" passwd --color
-------------------------POSIX 表示法
portable operating system interface 可移植操作系统接口[:alpha:] 字母 a-Z [a-Z][:lower:] 小写字母 a-z[:upper:] 大写字母 A-Z[:digit:] 十进制数 0-9[:xdigit:] 十六进制数 0-9a-F[:alnum:] 字母+数字 a-Z0-9[:space:] 空白字符(空格 tab)[:punct:] 符号 [^a-Z0-9]?[^[:alpha:]] 取反# vim s1
mike and tomaaabcccd11123334 abcdefg //使用space键加空格 hello //使用tab键加空格# grep '^[[:space:]]' s1
# grep '[[:punct:]]' s1 --color-------------------------------
扩展正则egrep = grep -E
支持的基本正则元字符 ^$.*[]\ \< \>| 或
# egrep 'NW|WE' datafile
northwest NW Charles Main 3.0 .98 3 34western WE Sharon Gray 5.3 .97 5 23western WE Sharon Gray 5.3 .97 5 23# grep -E 'NW|WE' datafile
northwest NW Charles Main 3.0 .98 3 34western WE Sharon Gray 5.3 .97 5 23western WE Sharon Gray 5.3 .97 5 23? 前面的条件匹配0次或1次
[root@teacher test]# egrep 'a?bc' s1
abcqbcwbcebc abcdefg---------------------
+ 前面的条件匹配一次或多次# vim s1abcabcabc[root@teacher test]# egrep 'a+bc' s1abc abcdefg[root@teacher test]# egrep '(abc)+' s1 --color
[root@teacher test]# egrep 'aa+' s1
aaab# egrep '^[a-z]+:' passwd --color
------------------------
() 标签或一组条件# egrep '(root).*\1.*\1' passwd --color
root:x:0:0:root:/root:/bin/bash# vim s2
atatatatatataataataat# egrep '(at){3}' s2 --color
atatat-----------------------
x{m} x{m,} x{m,n} 条件重复多少次# egrep '(at){2,3}' s2 --color
atatatatat-----------------------fgrep[root@teacher test]# fgrep 'e.c' s1
[root@teacher test]# fgrep '$' s1
,%$?+-)(-----------------------------
grep-i 不去分大小写-v 取反-c 匹配的行数-n 显示行号-o 只显示匹配内容--color 色彩显示匹配的内容-r 递归查找# cd /test
# grep -r 'root' /test-l //当于r选项结合使用时把包含正则表达式的文件名列出
# grep -rl 'root' /test/test/passwd/test/loginfile/test/a1/test/shadow-A num 显示匹配内容下num行
-B num 显示匹配内容上num行-num 显示匹配内容上下num行# vim s3
1234 abc56789[root@teacher test]# grep -A 2 'abc' s3
4 abc56[root@teacher test]# grep -B 2 'abc' s3234 abcYou have new mail in /var/spool/mail/root[root@teacher test]# grep -2 'abc' s3234 abc56# cat -n passwd
1 root:x:0:0:root:/root:/bin/bash 2 roooot:x:0:0:root:/root:/bin/bash 3 rootooo:x:0:0:/bin/bash:arooootbc 4 ro:x:0:0:root:/root:/bin/bash 5 bin:x:1:1:bin:/bin:/sbin/nologin 6 daemon:x:2:2:daemon:/sbin:/sbin/nologin 7 adm:x:3:4:adm:/var/adm:/sbin/nologin 8 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 9 sync:x:5:0:sync:/sbin:/bin/sync 10 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 11 halt:x:7:0:halt:/sbin:/sbin/halt 12 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 13 news:x:9:13:news:/etc/news: 14 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 15 operator:x:11:0:operator:/root:/sbin/nologin 16 games:x:12:100:games:/usr/games:/sbin/nologin 17 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 18 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 19 nobody:x:99:99:Nobody:/:/sbin/nologin 20 nscd:x:28:28:NSCD Daemon:/:/sbin/nologin [root@teacher test]# cat -n passwd|egrep '[[:space:]]+1' 1 root:x:0:0:root:/root:/bin/bash 10 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 11 halt:x:7:0:halt:/sbin:/sbin/halt 12 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 13 news:x:9:13:news:/etc/news: 14 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 15 operator:x:11:0:operator:/root:/sbin/nologin 16 games:x:12:100:games:/usr/games:/sbin/nologin 17 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 18 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 19 nobody:x:99:99:Nobody:/:/sbin/nologin