温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell 之 grep 和正则表达式(五)

发布时间:2020-07-24 14:43:03 来源:网络 阅读:4009 作者:上帝之子521 栏目:开发技术

        今天我们来学习下 shell 中的 grep 和正则表达式。作为基础入门学习,也只是学习一些简单的语法。

        首先我们来看看 grep 查找命令。我们先来看看 man grep

shell 之 grep 和正则表达式(五)

        我们看到 grep 的用法有很多,我们就来看看最常用的一些操作。

shell 之 grep 和正则表达式(五)

        我们可以看到 grep "a" test.txt 和 cat test.txt | grep "a" 的效果是一样的,都是查找 a 这个字符。那么我们在前面加上 -v 呢,它表示的是除了带有 a 字符剩余的别的内容

shell 之 grep 和正则表达式(五)

        我们看到 -c 的意思是打印出所查找字符的行数-v -c 就代表的是除所查找的字符以外的所有行数

shell 之 grep 和正则表达式(五)

        我们看到 -n 便是加上它所在的行号,同样的也适用于 cat 命令

shell 之 grep 和正则表达式(五)

        我们看到 -A 2 是显示所查找的字符的后两行(after);-B 2 是显示所查找的字符前两行(before);-A 2 -B 2 和 -C 2 的效果是一样的,都是显示所查找字符的前后两行的数据

shell 之 grep 和正则表达式(五)

        我们看到在 -r 选项是递归查找,如果我们在查找的子目录中也有相应的字符串,那么我们此时加上 -r ,便会全部查找到。

        下来我们来学习下正则表达式,那么为什么要学习正则表达式呢?正则表达式: a> 能模糊、快速匹配数据串;b> 为学习 grep,awk,sed 等文本过滤命令做铺垫;c > 编写高级 bash 脚本的需要。那么正则表达式有哪些元字符呢?[ ] \ ^ $ . | ? * + ( )

        我们接下来来看看这些基本元字符的含义,如下

 shell 之 grep 和正则表达式(五)

        下来我们逐一来看看。

        1、^

shell 之 grep 和正则表达式(五)

        我们看到 ls | grep '^[0-9]' 查找的是以 0-9 开头的文件,下面是 0-3 开头的文件。在里面加上 ^ 表示非 0-3 开头的所有文件。

        2、$

shell 之 grep 和正则表达式(五)

        我们看到我们在查找以 e 结尾的字符,然后再以数字 0-9 开头的,它只能严格匹配到 3e 和 4e;而 56e 只能以不是 ^ 开头的这样方式来进行匹配。

        3、* 和 ?

shell 之 grep 和正则表达式(五)

        我们看到在以数字开头,?* 后面接任意字符的字符串全被打印出来了。

        4、 .

shell 之 grep 和正则表达式(五)

        我们看到在以 5 开头,e 结尾的字符串 56e 被成功匹配出来;

        5、pattern\{n\}

shell 之 grep 和正则表达式(五)

        我们看到两次的区别是什么呢?前一次的是只要符合条件就都匹配出来,加上 ^ 则表示只以两个数字开头的字符串被匹配出来。

        6、pattern\{n, \}

shell 之 grep 和正则表达式(五)

        我们看到效果是最少出现 2 次,在后面我们写进去的 77777777 也被匹配出来了。

        7、pattern\{n,m\}

shell 之 grep 和正则表达式(五)

        我们看到这次是在数字开头的 2 和 4 之间的字符串。经过学习了这么多正则表达式的用法,发现它还是很灵活的,后面我们会继续对正则表达式的学习。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI