grep 判断不是正则的_Day26 正则介绍_grep工具

grep 工具

语法grep [-cinvABC] 'word' filename

-c 行数 -i 不区分大小写 -n 显示行号 -v 取反,将除了其意外的过滤并显示出来 -r 遍历所有子目录 -A 后面跟数字,过滤出符合要求的行以及下面n行 -B 同上,过滤出符合要求的行以及上面n行 -C 同上,同时过滤出符合要求的行以及上下各n行

grep工具具体用法示例

概览

注:做实验时,一般吧文件复制到一个实验目录,不直接修改文件

特殊符号**^**:放在括号里面是取反,外面是以什么开头

例如 [^0-9] 那就是非数字(包括字母+特殊符号);

例如[^a-zA-Z] 那就是非字母(包括数字+特殊符号)

例如[^0-9a-zA-Z]那就是非数字字母(特殊符号)

grep -n 'root' /etc/passwd

grep -nv 'nologin' /etc/passwd

grep '[0-9]'/etc/inittab

grep -v '[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 //*表示匹配其左边0到n个重复的字符

grep '.*' test.txt //.*表示匹配所有字符,包括空行

grep 'o\{2\}' /etc/passwd //{}表示其前面字符的一个范围

示例1.

[root@centos001 grep]# grep '[0-9]' passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@centos001 grep]# grep -v '[0-9]' passwd

[root@centos001 grep]#

示例2.过滤是否带有#号的文件,

[root@centos001 grep]# grep -n '^#' inittab //查看带有#的

1:# inittab is no longer used when using systemd.

[root@centos001 grep]# grep -nv '^#' inittab //查看没有#号的

9:kJAHkladh

示例3.特殊符号^

[root@centos001 grep]# grep '[^0-9]' inittab //过滤并列出除了数字的字符

# inittab is no longer used when using systemd.

[root@centos001 grep]# grep '^[^0-9]' inittab //过滤并列出除了数字开头的字符

# inittab is no longer used when using systemd.

[root@centos001 grep]# grep -nv '^[^0-9]' inittab //过滤并列出与上面相反的内容

8:123123421

示例4.使用.*匹配指定字符串

[root@centos001 grep]# grep 'r.o' passwd //这个点代表任意字符

root:x:0:0:root:/root:/bin/bash

[root@centos001 grep]# grep 'aming.*bash' passwd //在。*首位输入字符串的首尾名称

aming:x:1001:1007::/home/aming:/bin/bash

egrep

介绍:egrep为grep的扩展版本

概览

grep 'o\{2\}' /etc/passwd //指定要过滤字符的出现字数 注:这个必须加上转义字符\

egrep 'o{2}' /etc/passwd //egrep可不用加\

egrep 'o+' /etc/passwd //过滤一个或多个指定的字符,匹配一个或多个+号前面的字符

egrep 'oo?' /etc/passwd //过滤0个或一个指定字符,?前的字符为0或1

egrep 'root|nologin' /etc/passwd //竖线表示或者的意思

egrep '(oo){2}' /etc/passwd

示例:特殊符号+,过滤一个或多个指定字符

[root@centos001 grep]# grep 'o+a' passwd //这里能看到grep是不能和+号一起使用的

[root@centos001 grep]# egrep 'o+m' passwd // 指定过滤

user1:x:1000:1000::/home/user1:/bin/bash

扩展

把一个目录下,过滤所有*.php文档中含有eval的行

grep -r --include="*.php" 'eval' /data/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值