9.1、正则介绍_grep(上)
- 正则就是一串有规律的字符串
- 对编写shell脚本有很大帮助
- 各种编程语言都有正则,原理一样
- grep/egrep、sed、awk
- grep [-cinvABC] 'word' filename
- -c行数
1. [root@localhost grep]# grep -c 'nologin' passwd
2. 17
1. [root@localhost grep]# grep -i '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
6. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7. operator:x:11:0:operator:/root:/sbin/nologin
8. games:x:12:100:games:/usr/games:/sbin/nologin
9. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
10. nobody:x:99:99:Nobody:/:/sbin/nologin
11. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
12. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
13. dbus:x:81:81:System message bus:/:/sbin/nologin
14. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
15. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
16. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
17. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
19. [root@localhost grep]#
1. [root@localhost grep]# grep -n 'nologin' passwd
2. 2:bin:x:1:1:bin:/bin:/sbin/nologin
3. 3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4. 4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5. 9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
6. 10:operator:x:11:0:operator:/root:/sbin/nologin
7. 11:games:x:12:100:games:/usr/games:/sbin/nologin
8. 12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
9. 13:nobody:x:99:99:Nobody:/:/sbin/nologin
10. 14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
11. 15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
12. 16:dbus:x:81:81:System message bus:/:/sbin/nologin
13. 17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
14. 18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
15. 19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
16. 20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
17. 21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
18. [root@localhost grep]#
1. [root@localhost grep]# grep -nv 'nologin' passwd
2. 1:root:x:0:0:root:/root:/bin/bash
3. 5:lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
4. 6:sync:x:5:0:sync:/sbin:/bin/sync
5. 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
6. 8:halt:x:7:0:halt:/sbin:/sbin/halt
7. [root@localhost grep]# grep -nvi 'nologin' passwd
8. 1:root:x:0:0:root:/root:/bin/bash
9. 6:sync:x:5:0:sync:/sbin:/bin/sync
10. 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
11. 8:halt:x:7:0:halt:/sbin:/sbin/halt
12. [root@localhost grep]#
- -A后面跟数字,过滤出符合要求的行以及下面n行
- -B同上,过滤出符合要求的行以及上面的n行
- -C同上,过滤出符合要求的行以及上下各n行
- grep/egrep示例
- grep -n 'root' /etc/passwd
- grep -nv 'nologin' /etc/passwd
- grep '[0-9]' /etc/inittab
- grep -v '^#' /etc/inittab
- grep -v '^#' /etc//inittab|grep -v '^$'
- grep '^[^a-zA-Z]' test.txt
- grep 'r.o' test.txt
- grep 'oo*' test.txt
- grep '.*' test.txt
- grep 'o{2}' /etc/passwd
- egrep 'o{2}' /etc/passwd
- egrep 'o+' /etc/passwd
- egrep 'oo?' /etc/passwd
- egrep 'root|nologin' /etc/passwd
- egrep '(oo){2}' /etc/passwd
1. [root@localhost grep]# grep -r 'root' /etc/ > /tmp/grep.log
2. [root@localhost grep]# grep passwd /tmp/grep.log
3. /etc/passwd:root:x:0:0:root:/root:/bin/bash
4. /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
5. /etc/passwd-:root:x:0:0:root:/root:/bin/bash
6. /etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
7. /etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
8. [root@localhost grep]#
1. [root@localhost grep]# grep -nA2 'root' passwd //列出包含root的行并列出后面的两行
2. 1:root:x:0:0:root:/root:/bin/bash
3. 2-bin:x:1:1:bin:/bin:/sbin/nologin
4. 3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. --
6. 10:operator:x:11:0:operator:/root:/sbin/nologin
7. 11-games:x:12:100:games:/usr/games:/sbin/nologin
8. 12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
9. [root@localhost grep]#
1. [root@localhost grep]# grep -nB2 'root' passwd //列出包含root的行,并列出关键字root的前面两行
2. 1:root:x:0:0:root:/root:/bin/bash
3. --
4. 8-halt:x:7:0:halt:/sbin:/sbin/halt
5. 9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
6. 10:operator:x:11:0:operator:/root:/sbin/nologin
7. [root@localhost grep]#
1. [root@localhost grep]# grep -nC2 'root' passwd //列出关键字root的及其前后两行
2. 1:root:x:0:0:root:/root:/bin/bash
3. 2-bin:x:1:1:bin:/bin:/sbin/nologin
4. 3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. --
6. 8-halt:x:7:0:halt:/sbin:/sbin/halt
7. 9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
8. 10:operator:x:11:0:operator:/root:/sbin/nologin
9. 11-games:x:12:100:games:/usr/games:/sbin/nologin
10. 12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
11. [root@localhost grep]#
9.2、grep(中)
- grep -n 'root' /etc/passwd
- grep -nv 'nologin' /etc/passwd
- grep '[0-9]' /etc/inittab
- grep -v '^#' /etc/sos.conf
- grep -v '^#' /etc/sos.conf|grep -v '^$'
- grep '^[^a-zA-Z]' test.txt
- grep 'r.o' test.txt
- grep 'oo*' test.txt
- grep '.*' test.txt
- grep 'o{2}' /etc/passwd
- egrep 'o{2}' /etc/passwd
- egrep 'o+' /etc/passwd
- egrep 'oo?' /etc/passwd
- egrep 'root|nologin' /etc/passwd
- egrep '(oo){2}' /etc/passwd
1. [root@localhost grep]# grep '[0-9]' /etc/inittab //过滤出所有包含数字的行
2. # multi-user.target: analogous to runlevel 3
3. # graphical.target: analogous to runlevel 5
4. [root@localhost grep]# grep '[0-9]' /etc/passwd
5. root:x:0:0:root:/root:/bin/bash
6. bin:x:1:1:bin:/bin:/sbin/nologin
7. daemon:x:2:2:daemon:/sbin:/sbin/nologin
8. adm:x:3:4:adm:/var/adm:/sbin/nologin
9. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
10. sync:x:5:0:sync:/sbin:/bin/sync
11. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
12. halt:x:7:0:halt:/sbin:/sbin/halt
13. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
14. operator:x:11:0:operator:/root:/sbin/nologin
15. games:x:12:100:games:/usr/games:/sbin/nologin
16. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
17. nobody:x:99:99:Nobody:/:/sbin/nologin
18. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
19. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
20. dbus:x:81:81:System message bus:/:/sbin/nologin
21. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
22. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
23. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
24. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
25. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
26. [root@localhost grep]#
1. [root@localhost grep]# grep -v '[0-9]' /etc/inittab //取反,过滤不包含数字的行
2. # inittab is no longer used when using systemd.
3. #
4. # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
5. #
6. # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
7. #
8. # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
9. #
10. #
11. # To view current default target, run:
12. # systemctl get-default
13. #
14. # To set a default target, run:
15. # systemctl set-default TARGET.target
16. #
17. [root@localhost grep]#
- grep -n '^#' /etc/inittab
1. [root@localhost grep]# grep -n '^#' /etc/inittab //过滤出以#开头的行
2. 1:# inittab is no longer used when using systemd.
3. 2:#
4. 3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
5. 4:#
6. 5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
7. 6:#
8. 7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
9. 8:#
10. 9:# multi-user.target: analogous to runlevel 3
11. 10:# graphical.target: analogous to runlevel 5
12. 11:#
13. 12:# To view current default target, run:
14. 13:# systemctl get-default
15. 14:#
16. 15:# To set a default target, run:
17. 16:# systemctl set-default TARGET.target
18. 17:#
19. [root@localhost grep]#
1. [root@localhost grep]# grep -vn '^#' inittab
2. 14:adklfja;lksdfj;alksdjf;
3. [root@localhost grep]#
- grep '[^0-9]' inittab 过滤出0-9的行
1. [root@localhost grep]# grep '[^0-9]' inittab
2. # inittab is no longer used when using systemd.
3. #
4. # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
5. #
6. # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
7. #
8. # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
9. #
10. # multi-user.target: analogous to runlevel 3
11. # graphical.target: analogous to runlevel 5
12. #
13. # To view current default target, run:
14. # systemctl get-default
15. adklfja;lksdfj;alksdjf;
16. # To set a default target, run:
17. # systemctl set-default TARGET.target
18. #
19. [root@localhost grep]#
- 以什么开头的符号^,若果该符号在方括号[]内,则取非
9.3、grep(下)
1. [root@localhost grep]# grep 'r.o' passwd
2. root:x:0:0:root:/root:/bin/bash
3. operator:x:11:0:operator:/root:/sbin/nologin
4. [root@localhost grep]#
1. [root@localhost grep]# grep 'o*o' passwd //*左边的字符重复N次
2. root:x:0:0:root:/root:/bin/bash
3. bin:x:1:1:bin:/bin:/sbin/nologin
4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. adm:x:3:4:adm:/var/adm:/sbin/nologin
6. lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
9. operator:x:11:0:operator:/root:/sbin/nologin
10. games:x:12:100:games:/usr/games:/sbin/nologin
11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
12. nobody:x:99:99:Nobody:/:/sbin/nologin
13. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
14. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15. dbus:x:81:81:System message bus:/:/sbin/nologin
16. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
17. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
18. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
20. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
21. [root@localhost grep]#
1. [root@localhost grep]# grep '.*' passwd
2. root:x:0:0:root:/root:/bin/bash
3. bin:x:1:1:bin:/bin:/sbin/nologin
4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. adm:x:3:4:adm:/var/adm:/sbin/nologin
6. lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
7. sync:x:5:0:sync:/sbin:/bin/sync
8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9. halt:x:7:0:halt:/sbin:/sbin/halt
10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11. operator:x:11:0:operator:/root:/sbin/nologin
12. games:x:12:100:games:/usr/games:/sbin/nologin
13. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
14. nobody:x:99:99:Nobody:/:/sbin/nologin
15. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
16. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
17. dbus:x:81:81:System message bus:/:/sbin/nologin
18. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
19. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
20. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
21. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
22. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
23. [root@localhost grep]#
24. [root@localhost grep]# grep 'root.*bash' passwd //匹配所有包括root和bash的行
25. root:x:0:0:root:/root:/bin/bash
26. [root@localhost grep]#
- grep 'o{2} passwd 匹配所有至少有两次o出现的行,该命令和egrep ‘0{2}’ passwd以及grep -E ‘o{2}’ passwd相同
1. [root@localhost grep]# grep 'o\{2\}' passwd
2. root:x:0:0:root:/root:/bin/bash
3. lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
4. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
5. operator:x:11:0:operator:/root:/sbin/nologin
6. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
7. [root@localhost grep]#
- grep 'o+o' passwd 和 egrep ‘o+o’ passwd //+号功能和*类似
1. [root@localhost grep]# egrep 'o+o' passwd
2. root:x:0:0:root:/root:/bin/bash
3. lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
4. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
5. operator:x:11:0:operator:/root:/sbin/nologin
6. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
7. [root@localhost grep]# grep 'o\+o' passwd
8. root:x:0:0:root:/root:/bin/bash
9. lp:x:4:7:lp:/var/spool/lpd:/sbin/NOLOGIN
10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11. operator:x:11:0:operator:/root:/sbin/nologin
12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
13. [root@localhost grep]#
- grep 'o\?o' passwd和egrep 'o?o' passwd
1. [root@localhost grep]# grep 'o\?t' passwd
2. root:x:0:0:root:/root:/bin/bash
3. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
4. halt:x:7:0:halt:/sbin:/sbin/halt
5. operator:x:11:0:operator:/root:/sbin/nologin
6. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
7. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
8. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
9. dbus:x:81:81:System message bus:/:/sbin/nologin
10. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
11. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
13. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
14. [root@localhost grep]# egrep 'o?t' passwd
15. root:x:0:0:root:/root:/bin/bash
16. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
17. halt:x:7:0:halt:/sbin:/sbin/halt
18. operator:x:11:0:operator:/root:/sbin/nologin
19. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
20. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
21. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
22. dbus:x:81:81:System message bus:/:/sbin/nologin
23. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
24. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
25. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
26. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
27. [root@localhost grep]#
- grep 'root|nologin' passwd 和egrep 'root|nologin' passwd // 匹配所有关于root或者nologin的行;|表示或者
1. [root@localhost grep]# grep 'root\|nologin' passwd
2. root:x:0:0:root:/root:/bin/bash
3. bin:x:1:1:bin:/bin:/sbin/nologin
4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. adm:x:3:4:adm:/var/adm:/sbin/nologin
6. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7. operator:x:11:0:operator:/root:/sbin/nologin
8. games:x:12:100:games:/usr/games:/sbin/nologin
9. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
10. nobody:x:99:99:Nobody:/:/sbin/nologin
11. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
12. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
13. dbus:x:81:81:System message bus:/:/sbin/nologin
14. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
15. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
16. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
17. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
19. [root@localhost grep]# egrep 'root|nologin' passwd
20. root:x:0:0:root:/root:/bin/bash
21. bin:x:1:1:bin:/bin:/sbin/nologin
22. daemon:x:2:2:daemon:/sbin:/sbin/nologin
23. adm:x:3:4:adm:/var/adm:/sbin/nologin
24. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
25. operator:x:11:0:operator:/root:/sbin/nologin
26. games:x:12:100:games:/usr/games:/sbin/nologin
27. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
28. nobody:x:99:99:Nobody:/:/sbin/nologin
29. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
30. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
31. dbus:x:81:81:System message bus:/:/sbin/nologin
32. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
33. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
34. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
35. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
36. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
37. [root@localhost grep]#
扩展
- grep -r --include="*.txt" '123' ./
1. [root@localhost ~]# grep -r --include="*.txt" '123' ./ //过滤出./目录下所有.txt文档内包含123的行
2. ./1.txt:123123123123123123
3. ./1.txt:123123123123123123
4. ./1.txt:123123123123123123
5. ./1.txt:123123123123123123
6. ./1.txt:123123123123123123
7. ./1.txt:123123123123123123
8. ./1.txt:123123123123123123
9. ./1.txt:123123123123123123
10. ./1.txt:123123123123123123
11. ./1.txt:123123123123123123
12. ./1.txt:123123123123123123
13. ./1.txt:123123123123123123
14. ./1.txt:123123123123123123
15. ./1.txt:123123
16. ./11.txt: 1 123123
17. ./11.txt: 13 123123123123123123
18. ./11.txt: 1 123123
19. ./11.txt: 13 123123123123123123
20. ./11.txt:#dhcp-range=1234::2, 1234::500, 64, 12h
21. ./11.txt:#dhcp-range=1234::, ra-only
22. ./11.txt:#dhcp-range=1234::, ra-names
23. ./11.txt:#dhcp-range=1234::, ra-only, 48h
24. ./11.txt:#dhcp-range=1234::2, 1234::500, slaac
25. ./11.txt:#dhcp-range=1234::, ra-stateless
26. ./11.txt:#dhcp-range=1234::, ra-stateless, ra-names
27. ./11.txt:#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5]
28. ./11.txt:#dhcp-option=option6:dns-server,[1234::77],[1234::88]
29. ./11.txt:#dhcp-option=option6:dns-server,[::],[1234::88]
30. ./11.txt:#dhcp-range=1234::2, 1234::500, 64, 12h
31. ./11.txt:#dhcp-range=1234::, ra-only
32. ./11.txt:#dhcp-range=1234::, ra-names