grep
[root@abinlinux ~]# grep 'root' /etc/passwd 匹配root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@abinlinux ~]# grep --color 'root' /etc/passwd --color 是颜色 用颜色来显示
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@abinlinux ~]# grep --color -n 'root' /etc/passwd 在那一行中出现 显示在那一行 -n
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
[root@abinlinux ~]# alias ing='grep --color' 自定义别名
[root@abinlinux ~]# vim .bashrc 放到这个配置文件中去
[1]+ Stopped vim .bashrc
[root@abinlinux ~]# fg
vim .bashrc
[root@abinlinux ~]# ing -c 'root' 1.txt -c出现了多少行 1.txt是/etc/passwd 复制过去的
2
[root@abinlinux ~]# grep --color -v 'root' 1.txt -v取反不包括root的行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@abinlinux ~]# ing -n -A 2 'root' 1.txt 把root 匹配出来 还要多显示两行 -A
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
[root@abinlinux ~]# ing -n -B 2 'games' 1.txt 会往上多显示两行 -B
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11-operator:x:11:0:operator:/root:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
[root@abinlinux ~]# ing -n -C 2 'games' 1.txt 上下两行都显示
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11-operator:x:11:0:operator:/root:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
14-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@abinlinux ~]# ing -r 'iptables' /etc/* -r匹配那个文件
/etc/init.d/iptables:# iptables Start iptables firewall
[root@abinlinux ~]# ing -rh 'iptables' /etc/* 不想显示前面的文件 可以加个h
# iptables Start iptables firewall
# description: Starts, stops and saves iptables firewall
[root@binbinlinux ~]# ing -n 'yunjie' 1.txt 过滤出 yunjie并带有 行号 -n 表示
25:yunjie:x:502:502::/home/yunjie:/bin/bash
[root@binbinlinux ~]# ing -v 'nologin' 1.txt 过滤出不带有 nologin -v 表示
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
abin:x:500:500::/home/abin:/bin/bash
[root@binbinlinux ~]# ing '[0-9]' 1.txt 中括号 [0-9]表示不管是几位 都能列出来
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@binbinlinux ~]# ing '[cN]' 1.txt 取中括号[cN] 表示 列举出来
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@binbinlinux ~]# ing '[a-zA-Z]' 1.txt 正则表达式 [a-zA-Z] 列举出来
nobody:x:99:99:Nobody:/:/sbin/nologin
user2:x:507:503::/home/user2:/bin/bash
user3:x:508:503::/home/user3:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
[root@binbinlinux ~]# ing -v '[a-zA-Z]' 1.txt -v取反 不包含这些的 就没有
[root@binbinlinux ~]# vi 1.txt vim有个缓存文件
[root@binbinlinux ~]# ls -l .1.txt.swp 查看 swp
-rw-r--r-- 1 root root 16384 9月 8 17:57 .1.txt.swp
[root@binbinlinux ~]# rm -f .1.txt.swp 删除缓存文件
vi 1.txt 加入纯数字 纯字符 和空行
[root@binbinlinux ~]# ing -v '[a-zA-Z]' 1.txt 可以把特殊字符行 和纯数字行 和空行列举出来
%#%$#%$#^%&^%&^**&^(&^(&^&(}{}{}}}}]]]][]][][][]
2222222222222222222222222222222222222222222222222222222
[root@binbinlinux ~]# ing '^[a-z]' 1.txt ^匹配以字母开头的行 1
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@binbinlinux ~]# ing '^[0-9]' 1.txt ^匹配 以数字开头的行
2222222222222222222222222222222222222222222222222222222
[root@binbinlinux ~]# ing '[^0-9]' 1.txt ^放到中括号里面就是非数字的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@binbinlinux ~]# ing '^[^0-9]' 1.txt ^放前面就是不以数字开头的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
%#%$#%$#^%&^%&^**&^(&^(&^&(}{}{}}}}]]]][]][][][] 特殊字符也是匹配到的
[root@binbinlinux ~]# ing '^$' 1.txt ^开头 $结尾 这样就把空行表示出来
[root@binbinlinux ~]# ing -v '^$' 1.txt 空行之外的表示出来
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@binbinlinux ~]# ing 'r.o' 1.txt 匹配到roo .表示任意的字符 空格也可以
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@binbinlinux ~]# ing 'r.o' 1.txt 编辑 1.txt 加入字符 能匹配
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spor_ol/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/gamer*os:/sbin/nologin
vcsa:x:69:69:virtual cr.onsole memory ownoer:/dev:/sbin/nologin
[root@binbinlinux ~]# ing 'r*o' 1.txt 匹配结果 oo匹配两次 rrr 要以o;结尾
shutdrwn:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
* 0个或多个 *号前面的这个字符
[root@binbinlinux ~]# ing 'r.*o' 1.txt .是任意个字符 *是前面的字符或者是多个
root:x:0:0:root:/root:/bin/bash r开头o结尾的列出来
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdrwn:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
.* 叫做贪婪匹配
[root@binbinlinux ~]# ing 'r?o' 1.txt 没有结果
[root@binbinlinux ~]# ing 'r\?o' 1.txt 加上\表示 0或一个前面的字符
root:x:0:0:root:/root:/bin/bash
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdrwn:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@binbinlinux ~]# ing -E 'r?o' 1.txt -E等于加\ 一个意思
root:x:0:0:root:/root:/bin/bash
bin:xrrrr:1:1:bin:/bin:/sbin/nloogin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin grep -E == egrep
[root@binbinlinux ~]# egrep --color 'r?o' 1.txt 和 grep --color ‘r\?o' 1.txt 一个意思
root:x:0:0:root:/root:/bin/bash
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin ?号是个特殊字符要使用\符号或者egrep -E
[root@binbinlinux ~]# egrep --color 'r+o' 1.txt +号表示一个或多个前面的字符
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# ing -E 'r+o' 1.txt grep -E 也可以
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# ing 'r\+o' 1.txt 或者 加号\一下 去掉-E
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologini
.任意一个字符(包括空格下划线特殊符号) ; *零个或多个*前面的字符;.*任意个任意个字符 贪婪匹配;?0或一个?前面的字符;+1个或多个+前面的字符
? + 使用grep -E grep ‘r\+o ’ 1.txt 要脱义 egrep 直接可以使用
[root@binbinlinux ~]# egrep --color 'root|nologin' 1.txt 并且或者
root:x:0:0:root:/root:/bin/bash
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@binbinlinux ~]# grep --color 'root' 1.txt 匹配一次
root:x:0:0:root:/root:/bin/bash
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep --color 'root' 1.txt |grep --color 'nologin' 或者的表达方法
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@abinlinux ~]# egrep --color 'root|nologin' 1.txt egrep 或者的使用方法
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@abinlinux ~]# grep --color 'root' 1.txt grep要分两次表达
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@abinlinux ~]# grep --color 'root' 1.txt |grep --color 'nologin' 表达两次
operator:x:11:0:operator:/root:/sbin/nologin
[root@binbinlinux ~]# egrep --color '(rr)+' 1.txt +号前面的多个成双的r
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep -E --color '(rr)+' 1.txt grep -E才可以使用
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep -E --color '(rr){1,3}' 1.txt 匹配一个范围 1-3个
bin:xrrrr:1:1:bin:/bin:/sbin/nologin
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep -E --color '(rr){5}' 1.txt 范围5
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep -E --color '(rr){5,8}' 1.txt
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
operrrrrrrrrrrrrrrroator:x:11:0:operator:/root:/sbin/nologinii
[root@binbinlinux ~]# grep -E --color '(rr){10}' 1.txt
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
{} 指定它的次数的
[root@binbinlinux ~]# grep --color '\(rr\)\{10\}' 1.txt 使用grep 不用-E 使用\符号
uucp:x:10:14:uucp:/varrrrrrrrrrrrrrrrrrrrro/spor_ol/uucp:/sbin/nologin
+ ? () {} | 要使用egrep 或者grep -E 或者是 \符号
本文转自 amenging 51CTO博客,原文链接:http://blog.51cto.com/11335852/1983661