正则表达式⽂本过滤grep⽂本过滤
grep -w 是按单词匹配,和普通的匹配不⼀致
单词的分隔符, 数字加字母加下划线都算做单词的⼀部分
grep -f p.txt /etc/passwd
匹配显⽰结果的⾏号
grep 并且关系和或者关系
1.并且 grep root /etc/passwd | grep shutdown
2.或者 grep -e root -e shutdown /etc/passwd
正则表达式
1.字符匹配
. 表⽰⼀个任意字符 .放在[]⾥⾯就表⽰.本⾝这个字符
2.匹配次数
某⼀个字符出现的次数
* 表⽰*号前⾯的字符出现的次数是不确定的
3.位置锚定
⾏⾸ ^ 不能匹配中间某段字符串的开始
⾏尾 $ 不能匹配中间某⼀段字符串的结尾
单词词⾸ \<root root处于单词的最左侧
单词词尾 root\> root处于单词的最右侧
4.分组
1. echo wangwangwangggww | grep "\(wang\)\{3\}"
2.后向引⽤
正则表达式和通配符的区别
正则化过滤器正则表达式匹配的是⽂件的内容或者标准输出的字符串,通配符匹配的是⽂件的名称.两者操作的对象不⼀致.
匹配字符串问题
shell执⾏命令的时候,正则表达式是以整个输出作为字符串内容,包括看不到的空格符号。
有些命令结果会输出⼀个或者多个空格,有些命令不会输出空格.
1.在表达式中()符号前⾯和{}括号前⾯都必须要加上\(\) 和 \{\}.
grep "^\(.*\):.*\1$" /etc/passwd
2.正则表达式默认从字符串的最前⾯开始查,但是如果锚定的是⾏尾,那么正则会从尾部开始查
1.从尾部开始查
2.从头部开始查
3.分组实例
第⼀分组匹配到的字符串是7,最后⾯的[0-9]*\1 表⽰匹配到以7结尾⽽且7前⾯可以包含任意个数字的数字
基本正则和扩展正则的区别
1.基本正则语法⼩括号和⼤括号前⾯需要加上\符号做转义
grep -w "[0-9]\{2,3\}" /etc/passwd
2.扩展正则⼩括号和⼤括号前⾯不要加上转义字符
grep -Ew "[0-9]{2,3}" /etc/passwd
egrep -w "[0-9]{2,3}" /etc/passwd
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论