美文网首页
grep正则

grep正则

作者: 强出头 | 来源:发表于2018-01-24 20:53 被阅读0次

91 正则介绍_grep(上)

正则介绍
grep
[root@localhost ~]#mkdir grep
[root@localhost ~]#cd grep/
[root@localhost grep]#cp /etc/passwd .
[root@localhost grep]#ls
passwd
[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
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
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost grep]#which grep
alias grep='grep --color=auto'(自动颜色)
    /usr/bin/grep

grep -c 显示行数

[root@localhost grep]#grep -c 'nologin' passwd
15

grep -n 显示行号

[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
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
13:nobody:x:99:99:Nobody:/:/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:999:997:User for polkitd:/:/sbin/nologin
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
18:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin

grep -i不区分大小写

[root@localhost grep]#grep -n 'nologin' passwd |head -4
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 -ni 'nologin' passwd |head -4
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

grep -v 取反 显示不符合条件的

[root@localhost grep]#grep -n 'nologin' passwd |head -4
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 |head -4
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/NOLogin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

grep -r 遍历所有目录下文件

[root@localhost grep]#grep -r 'root' /etc/  |head -1
/etc/grub.d/00_header:datarootdir="/usr/share"

grep -A 后面跟数字 显示符合要求的行并显示其下面的n行

[root@localhost grep]#grep -nA2 'bash' 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
--
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash

grep -B后面跟数字 显示符合条件的行并显示其上面的n行

[root@localhost grep]#grep -nB2 'bash' passwd 
1:root:x:0:0:root:/root:/bin/bash
--
18-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19-chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash

grep -C 后面跟数字 显示符合条件的行并显示其上下各n行

[root@localhost grep]#grep -nC2 'bash' 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
--
18-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19-chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash

9.2 grep(中)

grep正则实例

^ 号表示以什么开头的

[root@localhost grep]#grep -n '^#' /etc/inittab |head -1
(以#开头的行)
1:# inittab is no longer used when using systemd.

^ 放在 [] 里面表示取反

[root@localhost grep]#grep -n '^[^0-9]' passwd |head -4
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
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@localhost grep]#grep -n '^[0-9]' passwd |head -4

93 grep(下)

. 表示任意一个字符

[root@localhost grep]#grep 'r.o' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

\ 脱义符 grep -E 识别{} egrep 识别{}

[root@localhost grep]#grep '{2}' passwd 
[root@localhost grep]#grep 'o\{2\}' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost grep]#grep -En 'o{2}' passwd 
1:root:x:0:0:root:/root:/bin/bash
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost grep]#egrep -n 'o{2}' passwd 
1:root:x:0:0:root:/root:/bin/bash
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin

egrep 'o+o' 表示前面的o有一次以上

[root@localhost grep]#egrep 'o+o' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

egrep 'o+1' 表示1前面的o有1次或者0次的

[root@localhost grep]#egrep 'o?1' passwd 
bin:x:1:1:bin:/bin:/sbin/NOLogin
mail:x:8:12:mail:/var/spool/mail:/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash

egrep 'root|nologin' 表示匹配root和nologin

[root@localhost grep]#grep -E 'root|nologin' passwd 
root:x:0:0:root:/root:/bin/bash
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
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
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin

扩展
把一个目录下,过滤所有.php文档中含有eval的行
grep -r --include="
.php" 'eval' /data/

相关文章

  • grep正则

    91 正则介绍_grep(上) 正则介绍grep grep -c 显示行数 grep -n 显示行号 grep -...

  • 三剑客_grep

    grep grep 相关参数 grep + 正则表达式(扩展正则)

  • 2018-10-19

    10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 正则介绍 9.1 _gre...

  • Linux简单学习记录(八)

    正则表达式和Shell脚本 一、正则表达式 1.grep与egrep工具 grep命令的格式grep [-cinv...

  • shell正则表达式

    基本正则列表 扩展正则列表 正则表达式匹配练习: 1)典型的应用场合:grep、egrep检索文本行 grep命令...

  • 使用grep排除空行和注释行

    Tip: 排除空行和#注释, 需要正则,因为 | 或者符 用了grep的正则,所以需要加 grep -E 或者eg...

  • 正则/grep

    正则介绍 什么是正则 * 正则就是一串有规律的字符串* 掌握好正则对于编写shell脚本有很大帮助* 各种编程语言...

  • Linux grep、egrep使用命令详解

    grep egrep区别grep 默认不支持扩展 但可以通过-E 选择来支持扩展正则egrep 支持扩展正则 ...

  • grep常用命令

    grep:支持基本正则表达式 egrep:支持扩展正则表达式,相当于grep -E fgrep:不支持正则表达式,...

  • shell 目录

    什么是正则 结构 Sed Awk Grep

网友评论

      本文标题:grep正则

      本文链接:https://www.haomeiwen.com/subject/nomuaxtx.html