[root@localhost ~]# mkdir grep
[root@localhost ~]# cd grep/
[root@localhost grep]# cp /etc/passwd .
[root@localhost grep]# ls
passwd
[root@localhost grep]# pwd
/root/grep
[root@localhost grep]# grep 'nologin' passwd //会看到过滤的关键词标红
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
等等等,只截取了一部分
[root@localhost grep]# which grep
alias grep='grep --color=auto'
/usr/bin/grep
[root@localhost grep]# /usr/bin/grep 'nologin' passwd
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
等等等,只截取了一部分
[root@localhost grep]#
[root@localhost grep]# grep -c 'nologin' passwd
15
[root@localhost grep]#
[root@localhost grep]# grep -n 'nologin' passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
等等等,只截取了一部分
会在最左侧绿色的数字显示行号
[root@localhost grep]# grep -nv 'nologin' passwd //会显示除了nologin的那些行
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost grep]# grep -r 'root' /etc/ //会匹配etc目录下所有带root的文件
/etc/pki/ca-trust/extracted/README:root CA certificates.
/etc/pki/ca-trust/extracted/java/README:root CA certificates.
/etc/pki/ca-trust/extracted/openssl/README:root CA certificates.
[root@localhost grep]# grep 'root' /etc/
grep: /etc/: 是一个目录
[root@localhost grep]#
[root@localhost grep]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]#
[root@localhost grep]# grep -A2 'root' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost grep]# grep -nA2 'root' passwd //显示passwd文件中的root行的下面两行,并显示行号
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
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost grep]#
[root@localhost grep]# grep -nB2 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]#
[root@localhost grep]# grep -nC2 'root' passwd
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
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost grep]#
[root@hf-01 grep]# grep '[0-9]' passwd //过滤出所有带数字的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
等等,只截取了一部分
[root@hf-01 grep]#
[root@hf-01 grep]# grep -v '[0-9]' /etc/passwd
[root@hf-01 grep]#
[root@hf-01 grep]# cp /etc/inittab ./ //不能直接改动,因为/etc/inittab是系统开机配置问件
[root@hf-01 grep]# vim inittab
[root@hf-01 grep]# grep -nv '^#' inittab
5:fadfdfasfas
7:113465142111
12:%$#@$#*&^$%$#
[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^1'
fadfdfasfas
%$#@$#*&^$%$#
[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^f'
113465142111
%$#@$#*&^$%$#
[root@hf-01 grep]# grep -v '^#' inittab|grep -v '^%'
fadfdfasfas
113465142111
在第一次取反 加入-n ,会把显示的行号默认成内容
[root@hf-01 grep]# grep -nv '^#' inittab|grep -nv '^1'
1:5:fadfdfasfas
2:7:113465142111
在第二次取反的时候,加-n参数,会看到显示的行号新的星号
这是因为第二次取反会把第一次取反后得出的结果,输入到第二次取反(默认是一个新文件)
[root@hf-01 grep]# grep -v '^#' inittab |grep -nv '^1'
1:fadfdfasfas
3:%$#@$#*&^$%$#
[root@hf-01 grep]# grep -v '^#' inittab|grep -nv '^%'
1:fadfdfasfas
2:113465142111
[root@hf-01 grep]# grep '[^0-9]' inittab
# inittab is no longer used when using systemd.
#
fadfdfasfas
# multi-user.target: analogous to runlevel 3
%$#@$#*&^$%$#
等等等,只截取了一部分
[root@hf-01 grep]# grep -v '[^0-9]' inittab
113465142111
[root@hf-01 grep]# grep '^[^0-9]' inittab
# inittab is no longer used when using systemd.
#
fadfdfasfas
# multi-user.target: analogous to runlevel 3
%$#@$#*&^$%$#
# graphical.target: analogous to runlevel 5
#
等等等,只截取了一部分
[root@hf-01 grep]# grep -nv '^[^0-9]' inittab
7:113465142111
[root@hf-01 grep]# grep 'r.o' passwd //会匹配出包含ro的字符,其中的点表示任意一个字符
[root@hf-01 grep]# grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
adas:124:bdsf:rto:pass
halt:x:7:0:halt:/r.o:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]# grep 'h*n' inittab
# inittab is no longer used when using systemd.
hhhhan
haaaaannnn
wannnnnnn
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# To set a default target, run:
# ln -sf /lib/systemd/system/<target name>.target /etc/systemd/system/default.target
[root@hf-01 grep]#
总结grep 'hn' passwd 过滤的时候,跟号前面的字符相关,可以是0个或多个,跟后面的字符没有什么关系,若是在一行中无 h 而有 n 也会匹配出来(这就表示0个h)
[root@localhost grep]# grep '# inittab.*' inittab
# inittab is no longer used when using systemd.
[root@localhost grep]# grep 'h\{2\}' inittab
hhhhan
[root@localhost grep]#
[root@localhost grep]# grep 'h\{0,4\}' inittab //匹配文件中h出现0到4次的都会匹配出来
# inittab is no longer used when using systemd.
hhhhan
haaaaannnn
wannnnnnn
waaaaaal
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
#
等等等,只截取了一部分
[root@localhost grep]# grep -E 'h{2}' inittab
hhhhan
[root@localhost grep]# egrep 'h{2}' inittab
hhhhan
[root@localhost grep]#
[root@localhost grep]# grep -E '(hh){2}' inittab //表示连续的hh出现两次匹配打印出来
hhhhan
[root@localhost grep]# egrep '(hh){2}' inittab
hhhhan
grep -E等于egrep命令,若是在连续匹配字符的时候,不使用 grep -E或 egrep 命令,只使用grep命令,其中的符号则需要脱义。
[root@localhost grep]# egrep 'h+h' inittab
hhhhan
[root@localhost grep]# egrep 'h+a' inittab
hhhhan
haaaaannnn
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
[root@localhost grep]#
[root@localhost grep]# egrep 'h?1f' inittab //匹配h和1f字符,若文件没有h字符,则匹配1f字符
h1f:gfdgfg
hghjhk:1f:hjjkuhhj
[root@localhost grep]#
[root@localhost grep]# egrep 'h|1f' inittab
# inittab is no longer used when using systemd.
hhhhan
haaaaannnn
h1f:gfdgfg
hghjhk:1f:hjjkuhhj
# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
# graphical.target: analogous to runlevel 5
[root@localhost grep]#