grep 文本过滤命令
grep全称 Global search regular expression and print out the line,全面搜索正则表达式并显示出来,grep 命令是一种强大的文本搜索工具,根据用户指定的“模式“对目标文本进行匹配检查,打印匹配到的行,由正则表达式或者字符及基本文本字符所编写的过滤条件
基本正则表达式和扩展正则表达式
ls /etc/ | grep -E *.conf = ls /etc/ egrep *.conf
grep -E “root|ROOT” passwd ##寻找root和大写的root(ROOT)
grep -Ei “root” passwd ##寻找root,不区分大小写
grep -Ei “^root” ##寻找以root开头的行,不区别大小写
grep -Ei “root$” ##寻找以root结尾的行,不区分大小写
grep -Ei "^root|root$" passwd ##寻找以root开头和root结尾的行,不区分大小写
grep -Ei "^root|root$" passwd -v | grep root ##寻找在某行中间位置的root -v:除了
grep -Ei "^root|root$" passwd -v ##寻找除了在某行开头的root和某行末尾的root,搜索出来包括没有root的行
grep ROOT passwd -n ##寻找含ROOT的行的行号
grep ROOT passwd -2 ##显示搜到的结果的上下两行
grep ROOT passwd -n2 ##显示搜到的结果的上下两行,并标示出行号
grep ROOT passwd -A1 ##显示搜到的结果的下面一行
grep ROOT passwd -B1 ##显示搜到的结果的上面一行
grep 中字符匹配位置的设定
grep 默认模式是贪婪模式
grep 从贪婪模式中退出 \<关键字 关键字\> \<关键字\>
会把前后的字符不显示,但是注意,如果遇到/情况会不生效,可能把/当成分隔符来识别了
grep中字符匹配次数设定
参数 | 解释说明 |
---|---|
. | x…y x和y之间有两个字符 .表示一个字符 |
x*y | 表示x出现0-任意次,*之前的字符出现0-任意次 |
x?y | 出现0-1次 |
+ | 出现1-任意次 |
{n} | 字符出现n次,并解除贪婪模式,前后都不显示其他的 |
{m,n} | 字符至少出现m次,最多出现n次 |
{m,} | 字符至少出现m次 |
.* | 关键字之间匹配任意字符 |
grep -E “\<x{1}y” westos ##x至少出现一次,解除贪婪模式