grep 全称(Global search REgular expression and Print out the line)
作用:文本搜索工具,根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行。
模式:由正则表达式的元字符及文本字符所编写的过滤条件。
编写测试文件test.txt内容如下:
[root@localhost shell_test]# cat test.txt
hello world
1a2f3 yui
456 haha
nihao
thinks
1. grep和文本字符编写的过滤条件
#搜索test.txt文件中含有1a字符的行,并打印输出此行全部内容
[root@localhost shell_test]# grep “1a” ./test.txt
1a2f3 yui
[root@localhost shell_test]# cat test.txt | grep “1a”
1a2f3 yui
#只想展示匹配到的内容可以在grep 后加-o,不展示 全行内容
[root@localhost shell_test]# cat test.txt | grep -o “1a”
1a
2.grep和正则表达式编写的过滤条件
root@localhost shell_test]# cat test.txt | grep “[0-9]”
1a2f3 yui
456 haha
#是不是很奇怪,下面的命令,把匹配到的每个字符单独一行展示出来
#因为我们使用了-o模式 不在以行展示匹配到的内容,又因为正则表达式[0-9]表示 匹配0到9内的任意字符
#一旦匹配到一个字符就打印它,并换行继续匹配打印
[root@localhost shell_test]# cat test.txt | grep -o “[0-9]”
1
2
3
4
5
6
#下面使用egrep命令来实现,打印到一行中
#这里先来说明下grep和egrep的区别,grep在不加 -E的情况下,
#不支持扩展正则表达式,仅支持基本正则表达式,
#而egrep支持扩展表达式。e表示的就是extend,扩展的意思。
像{m,n},+等是扩展的表达式。
这里的grep -E 和 egrep 命令是等价的。因为正则表达式中含有扩展的表达式+
#这里的[0-9]+表示 会把同一行内匹配到连续出现的1到多个字符打印到一行内。
[root@localhost shell_test]# cat test.txt | grep -E -o “[0-9]+”
1
2
3
456
[root@localhost shell_test]# cat test.txt | egrep -o “[0-9]+”
1
2
3
456
也等价于下面的命令
[root@localhost shell_test]# cat test.txt | grep -E -o “[0-9]{1,}”
1
2
3
456
[root@localhost shell_test]# cat test.txt | egrep -o “[0-9]{1,}”
1
2
3
456
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142660.html