今天我们来学习下 shell 中的 grep 和正则表达式。作为基础入门学习,也只是学习一些简单的语法。
创新互联专注于武进企业网站建设,成都响应式网站建设公司,商城系统网站开发。武进网站建设公司,为武进等地区提供建站服务。全流程按需规划网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务首先我们来看看 grep查找命令。我们先来看看 man grep
我们看到 grep 的用法有很多,我们就来看看最常用的一些操作。
我们可以看到 grep "a" test.txt 和 cat test.txt | grep "a" 的效果是一样的,都是查找 a 这个字符。那么我们在前面加上 -v呢,它表示的是除了带有 a 字符剩余的别的内容。
我们看到 -c 的意思是打印出所查找字符的行数, -v -c 就代表的是除所查找的字符以外的所有行数。
我们看到 -n 便是加上它所在的行号,同样的也适用于 cat 命令。
我们看到 -A 2 是显示所查找的字符的后两行(after);-B 2 是显示所查找的字符前两行(before);-A 2 -B 2 和 -C 2 的效果是一样的,都是显示所查找字符的前后两行的数据。
我们看到在 -r 选项是递归查找,如果我们在查找的子目录中也有相应的字符串,那么我们此时加上 -r ,便会全部查找到。
下来我们来学习下正则表达式,那么为什么要学习正则表达式呢?正则表达式: a> 能模糊、快速匹配数据串;b> 为学习 grep,awk,sed 等文本过滤命令做铺垫;c > 编写高级 bash 脚本的需要。那么正则表达式有哪些元字符呢?[ ] \ ^ $ . | ? * + ( )
我们接下来来看看这些基本元字符的含义,如下
下来我们逐一来看看。
1、^
我们看到 ls | grep '^[0-9]' 查找的是以 0-9 开头的文件,下面是 0-3 开头的文件。在里面加上 ^ 表示非 0-3 开头的所有文件。
2、$
我们看到我们在查找以 e 结尾的字符,然后再以数字 0-9 开头的,它只能严格匹配到 3e 和 4e;而 56e 只能以不是 ^ 开头的这样方式来进行匹配。
3、* 和 ?
我们看到在以数字开头,?* 后面接任意字符的字符串全被打印出来了。
4、 .
我们看到在以 5 开头,e 结尾的字符串 56e 被成功匹配出来;
5、pattern\{n\}
我们看到两次的区别是什么呢?前一次的是只要符合条件就都匹配出来,加上 ^ 则表示只以两个数字开头的字符串被匹配出来。
6、pattern\{n, \}
我们看到效果是最少出现 2 次,在后面我们写进去的 77777777 也被匹配出来了。
7、pattern\{n,m\}
我们看到这次是在数字开头的 2 和 4 之间的字符串。经过学习了这么多正则表达式的用法,发现它还是很灵活的,后面我们会继续对正则表达式的学习。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。