正则表达式文本过滤
grep文本过滤
1.grep 默认是按照以行为基本单位进行匹配和显示的。
2.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处于单词的最右侧 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 正则表达式和通配符的区别
匹配字符串问题
基本正则和扩展正则的区别